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更改将被调用两次。因为它无法给出验证消息。让我说我的第一个日期是错误的。第二个日期是正确的。因为该验证消息将被隐藏。
如果第一个日期错误,有没有办法可以停止第二次触发?
答案 0 :(得分: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元素。如果情况并非如此,那么无论如何都要在daymarker
迭代器函数中创建一个新的.each()
。