将动态创建的表单元素添加到jquery.validate?

时间:2012-05-18 22:52:32

标签: javascript jquery jquery-plugins

我的问题似乎与javascript validation for dynamic element相同,但是那里提供的答案似乎对我不起作用。我正在使用query.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 个答案:

答案 0 :(得分:1)

jquery.validate“仅为每个名称选择第一个元素,仅选择那些具有指定规则的元素”(查看插件的源代码,定义名为elements的函数#450行附近。

在您的情况下,每个新添加的表单元素都具有名称legto,这将导致jquery.validate仅选择具有该名称的第一个表单元素并丢弃其余的表单元素验证

以下是解决此问题的方法

element4.name="legto"+rowCount;