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

Add dynamically created form elements to jquery.validate?

本文关键字:添加 jquery validate 元素 表单 动态 创建      更新时间:2023-09-26

我的问题似乎与动态元素的javascript验证相同,但是那里提供的答案似乎对我不起作用。我正在使用query.valid插件,它适用于我的大部分表单。但是,我有一个按钮可以将一行添加到包含多个输入元素的表中。我用于添加表单输入元素的代码如下:

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的新手(,但它确实根据需要添加了输入字段。但是,点击提交时,这些新字段不包括在验证中。我在这里错过了什么?

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

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

以下是解决此问题的方法

element4.name="legto"+rowCount;