【发布时间】:2013-05-29 23:23:27
【问题描述】:
我创建了一个JSFiddle。我正在动态添加一个包含输入元素的 div(在实际应用中,有多个字段)。当我单击提交时,它只是验证第一个而不是动态添加的 HTML 元素。我确保动态元素具有唯一的 ID。
有什么想法吗?
$('#submit').click(function (e) {
e.preventDefault();
validator = $("#myForm").validate({
rules: {
name: "required"
}
});
$("#myForm").valid();
});
更新:- 我注意到了一些奇怪的东西。在我添加一个新的输入元素,然后专注于这个新的输入并单击提交后,我可以在 firebug 中看到,jquery 会自动向这个输入标签添加一个“class=error”,而不会显示错误消息。如果我尝试向第二个输入写入内容,它会从第一个输入中删除错误消息。
【问题讨论】:
-
我正在使用 jquery 2.0 和 jquery validate 1.11.1
-
您不应有两个具有相同
name的文本输入。该值应该是唯一的。您的验证规则将仅匹配第一次出现的name=name。 -
将此小提琴视为在验证规则中使用不同值与不同输入名称配对的示例:jsfiddle.net/h4VuD
-
嗯,我认为只有 id 必须是唯一的,而不是任何其他属性?这不是插件的错误/错误实现吗?但在我的情况下,我可以添加多个输入标签,我不能完全按照你的方法来做,因为我不会提前知道 id。我是否必须“动态”添加规则,$('[name=fname]').rules("add", "required") 还是有更好的方法?
-
这不是错误。文档明确指出,每个输入都必须包含
name属性才能使插件正常运行。如果所有内容都相同,则此约束将没有逻辑意义。
标签: jquery validation jquery-validate