2

我的问题似乎与动态元素的 javascript 验证相同,但是那里提供的答案似乎对我不起作用。我正在使用 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 新手),但它确实根据需要添加了输入字段。但是,当点击提交时,这些新字段不包含在验证中。我在这里想念什么?

4

1 回答 1

1

jquery.validate “只选择每个名称的第一个元素,并且只选择那些指定了规则的元素”(查看插件的源代码,该函数elements在第 450 行周围定义)。

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

这是解决此问题的方法

element4.name="legto"+rowCount;
于 2012-06-10T15:30:37.760 回答