2012-05-18 167 views
2

我的問題似乎與javascript validation for dynamic element相同,但是那裏提供的答案似乎不適合我。我正在使用query.validate插件,並且它對我的大多數表單都正常工作。不過,我有一個按鈕來添加一行到包含多個輸入元素的表中。我使用添加的表單輸入元素的代碼如下:將動態創建的表單元素添加到jquery.validate?

var table=document.getElementById('flightlegs'); 
var rowCount=table.rows.length-1; 
var row=table.insertRow(rowCount); 
... 
var cell4=row.insertCell(3); 
var element4=document.createElement("input"); 
element4.type="text"; 
element4.size="3"; 
element4.setAttribute("required", "required"); 
element4.maxlength="3"; 
element4.name="legto"; 
element4.id="legto"+rowCount; 
cell4.appendChild(element4); 
$('#legto'+rowCount).rules('add', {required:true}); 
...(more of the same for other cells)... 

好了,這未必是最好的方式(我在JavaScript的新的),但它根據需要添加輸入字段。但是,在提交時,這些新字段不包含在驗證中。我在這裏錯過了什麼?

回答

1

jquery.validate(看一看插件的源代碼,稱爲elements功能周圍線#450定義的)「對於每個名稱和只有那些具有指定的規則僅選擇第一元件」。

在你的情況下,每個新加入的表單元素的名稱爲legto,這將導致jquery.validate與此名稱只選擇第一表單元素,並丟棄其餘WRT表單驗證。

這裏是你如何解決這個問題

element4.name="legto"+rowCount;