怎样才能停止改变事件

How can stop change event?

本文关键字:改变 事件      更新时间:2023-09-26
var InDate = trim($(".inDate").val());
if (InDate == '') {
  $(".inDate").val(dateDisplayFormat);
}
//Bind date picker
daymarker.bindElement(".inDate",
    { 
        onSelect: function(date) {
            $(".inDate").trigger('change');            
        }, 
        dateFormat:jsDateFormat
    });
$(".inDate").change(function() {
  //some validation functions are called here.
});

假设我有两行,分别是indate和outdates。

例如:

Indate       outDate
2011-02-20    2011-02-24 
2011-02-25    2011-02-27

因此,当我使用日期选择器更改第一个日期时,将调用两次日期更改。因此,由于不可能给出验证消息。假设我的第一次约会是错的。第二次约会是正确的。因为验证消息会被隐藏。

如果第一次约会是错误的,有办法让我停止第二次触发吗?

这并不是说它被"调用两次",而是你多次使用$(".inDate"),它总是指匹配元素的完整集合,而不仅仅是你当时碰巧感兴趣的那个。

这可能更接近你想要的:

// loop through each matching element
$(".inDate").each(function(index, elem){
  var
    // this particular element
    $elem = $(elem),
    InDate = trim($elem.val());
  if (InDate === '') {
    $elem.val(dateDisplayFormat);
  }
  //Bind date picker
  daymarker.bindElement(elem, { 
    onSelect: function(date) {
      $elem.trigger('change');            
    }, 
    dateFormat:jsDateFormat
  });
  $elem.change(function() {
    //some validation functions are called here.
  });
});

我假设daymarker.bindElement足够聪明,允许一个实际的DOM元素作为它的第一个参数,并且不特别要求包含CSS选择器的字符串。

我还假设daymarker.bindElement可以被调用任意次数,每次都有不同的目标DOM元素。如果不是这样,那么无论如何都要在.each()迭代器函数中创建一个新的daymarker