2013-09-23 17 views
0

添加錶行多元素動態地根據一些countjQuery驗證動態添加行有同名

 var del_count=$("#trainee_count").val(); 
     var row_counter=0; 
     for(var i=0;i<del_count;i++){ 
     row_counter++; 
     $(".add_trainee").append( 
      '<tr>'+ 
       '<td><input type="text" name="name" class="required" /></td>'+ 
       '<td><input type="text" name="jobTitle" /></td>'+ 
       '<td><input type="text" name="email" id="email" class="required email" /></td>'+ 
       '<td><input type="text" name="phone" class="required phone" /></td>'+ 
       '<td class="my_laptop" align="center" valign="middle"><input type="checkbox" class="laptop_checkbox" name="isLaptopRequired.'+row_counter+'" checked /></td>'+ 
      '</tr>' 

      ); 
     } 

基本上我試圖用多個同名的元素做了驗證。

驗證:

$(".traineeDetailsForm").validate({ 
       errorContainer: "#error_div", 
       errorPlacement: function(error, element) {} 
      }); 

我可能有「N」的行數,將具有相同的名字 這裏驗證適用於只在第一行(tr)

回答

-1
元件的「n」個數

使用.each()驗證具有相同名稱的多個元素。

$(".traineeDetailsForm").each(function() { 
    $(this).validate({ 
      errorContainer: "#error_div", 
      errorPlacement: function(error, element) {} 
    }); 
}); 
1

您無法驗證共享相同的多個輸入name。 jQuery Validate插件要求每個輸入都包含一個唯一的name,因爲name是插件跟蹤輸入的方式。

解決方法是使用一個計數器作爲name確保它是獨一無二的,就像你與你的複選框做的一部分......

$(".add_trainee").append( 
     '<tr>'+ 
      '<td><input type="text" name="name' + count + '" class="required" /></td>'+ 
      '<td><input type="text" name="jobTitle' + count + '" /></td>'+ 
      '<td><input type="text" name="email' + count + '" id="email" class="required email" /></td>'+ 
      '<td><input type="text" name="phone' + count + '" class="required phone" /></td>'+ 
      '<td class="my_laptop" align="center" valign="middle"><input type="checkbox" class="laptop_checkbox" name="isLaptopRequired.'+row_counter+'" checked /></td>'+ 
     '</tr>'); 

也看到這樣的回答:https://stackoverflow.com/a/18905194/594235