2016-12-13 185 views
3

我有一個輸入類validate,我用動態追加更多相同的類。動態添加輸入

$('body').on('change', $('.validade'), function() { 
    var value = $(this).val(); 
    var IsValid = TestValue(value); 
    console.log(IsValid); 
}); 

這工作事件觸發所有輸入添加,但不帶來價值。如果我使用:

$(".validate").change(function(){ 
    var value = $(this).val(); 
    var IsValid = TestValue(value); 
    console.log(IsValid); 
}); 

該值是可以的,但只適用於第一個輸入。我應該把它放在$(document).ready(function() {});上嗎?我試過但結果相同。

回答

2

change()將無法​​工作,因爲元素是動態生成的,所以你應該使用事件代表團.on(),你在第一個例子表明,處理起來:

$('body').on('change', '.validade', function() { 
    var value = $(this).val(); 
    var IsValid = TestValue(value); 
    console.log(IsValid); 
}); 

希望這有助於。

0

您通過jQuery object作爲第二個參數on,但你可以閱讀here,這應該是一個selector

$(element).on(events [, selector ] [, data ], handler) 

所以,你可以,如果你使用jQuery想象@扎卡里亞的解決方案將工作(+1.7),否則您需要使用delegate來代替。

相關的stackoverflow

0

如果Java腳本代碼的HTML開始之前標籤上你將工作,那麼你需要這個 - $(document).ready(func tion(){}); - 對儘快開始工作的發動機說。 (當所有內容(例如圖像)也被加載時,稍後發生加載事件)。如果js代碼在HTML的末尾,那麼這個函數就沒有意義了。

但對於動態生成的元素,你必須使用

$(document).on('action','selector',function(){}); 

$(document).on('change', 'selector', function() { 
    var value = $(this).val(); 
    var IsValid = TestValue(value); 
    console.log(IsValid); 
}); 

至於要選擇,最好的做法說,對

  • 的獨特元素中使用「ID」
  • 的設計用途使用「類」
  • 類似的動態元素使用「屬性」