2011-09-05 33 views
2
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 

因此,当我更改使用日期选取铟酸变化的第一个日期将因为它的twice.so称为是不可能给验证message.Lets说我的第一日期是错误的,第二次日期是正确的,因为验证信息将被隐藏。

如果第一次约会错误,我可以阻止第二次触发吗?

回答

0

这并不是说它被“调用两次”,而是您多次使用$(".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 seletor字符串。

我还假设daymarker.bindElement可以被调用任意次数,每次都有不同的目标DOM元素。如果情况并非如此,那么通过所有方法在.each()迭代器函数内部创建一个新的daymarker