2011-09-05 74 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