2012-09-07 37 views
3

我有以下代碼;在動態創建的元素上運行jQuery.each()

$('#btnSave').click(function (e) { 
    $("input:text").each(function (index, value) { 
     var el = $(this); 
     if (el.val().length == 0) { el.css('border', '1px solid red') } 
     return false; 
    }); 
}); 

在這裏,所有輸入的文本內容是動態創建的,因此我不能確認他們是否爲空或不..

如何去使用.on().each()?我google沒有運氣..在此先感謝..

+0

只要單擊按鈕之前創建元素,該代碼就應該可以工作。 '.on()'用於附加事件。 –

+0

這看起來像它會正常工作,你有什麼問題? – BZink

+2

爲什麼每次每次調用函數都返回false? – Rikki

回答

4

你的代碼是非常好的,但擺脫return false;。它在第一個輸入命中後停止.each()循環。

jsFiddle example

1

它不應該是一個問題,除非到元素並不在頁面上,當您單擊頁面上.. 也因爲你是返回返回FALSE;當該字段爲空只在第一個文本框將被賦予邊境..其他人將被排除在外,即使空..

試試這個

​$(function() { 
    $('#btn1').on('click' , function() { 
     var inp = ''; 
     for(var i=1;i< 6;i++){ 
      inp += '<input type="text" id="txt' + i + '"/>' 
     } 
     $('.textboxes').append(inp); 

     var isError = false; 
     $("input:text").each(function (index, value) { 
      var el = $(this); 
      if (el.val() == '') { 
       el.addClass('error'); 
       isError = true; 
      } 
     }); 

      if(isError){return false;}  
    });  

});​ 

還要檢查該工作示例... FIDDLE