jquery 关闭div时清除字段

lbsnaicq  于 2023-08-04  发布在  jQuery
关注(0)|答案(4)|浏览(110)

打开和关闭div,我使用了以下代码:

$('#addvisit').on('click', function(e) {
    e.stopImmediatePropagation();
  $('#fechvisit').slideToggle('slow');
});

个字符
我遇到的问题如下:
如果打开div并在select或input中放置值,如果再次关闭div,则不会清除字段。我打算每当我关闭div时,它都会清除字段。
你能帮忙吗?

gwbalxhn

gwbalxhn1#

您需要检测div是打开的还是关闭的,然后将输入的值设置为nothing。

$('#addvisit').on('click', function(e) {
  e.stopImmediatePropagation();
  $('#fechvisit').slideToggle('slow', function() {
    if (!$(this).is(":visible")) {
      $('#contac, #titl').val('');
    }
  });
});

个字符

gdx19jrr

gdx19jrr2#

您可以在slideToggle()上编写一个回调函数,并使用:visible Selector检查单击的元素是否可见。如果不可见,则清除选定值。

$('#addvisit').on('click', function(e) {
  e.stopImmediatePropagation();
  $('#fechvisit').slideToggle('slow', function() {
    if (!$(this).is(':visible')) {
      $("#titl, #contac").val("");
    }
  });
});

个字符

mw3dktmi

mw3dktmi3#

slideToggle可以有一个完成函数,所以我们只需要跟踪div是否被打开。等它开了,我们就可以把地清出来了。

const fetchVisit = $('#fechvisit');
let isOpen = false;

$('#addvisit').on('click', function(e) {
  e.stopImmediatePropagation();
  
  fetchVisit.slideToggle('slow', function(){
    isOpen = !isOpen;
    
    if(!isOpen){
      //clear out the values after opening
      fetchVisit.find('input, select').val('')
    }
  });
});

个字符

ozxc1zmp

ozxc1zmp4#

要在关闭div时清除字段,可以添加function,以便在向上滑动div之前清除select和input字段的值

$('#addvisit').on('click', function(e) {
  e.stopImmediatePropagation();
  if (!$('#fechvisit').is(':visible')) {
    clearFields();
  }
  $('#fechvisit').slideToggle('slow');
});
function clearFields() {
  $('#titl').val('');
  $('#contac').val('');
}

个字符

相关问题