JQuery.Validate使用消息添加动态规则

我有一个表格,我正在使用jquery.validate。 我最初使用一组规则和自定义消息调用validate …

$("#formName").validate( { rules: { myExistingInput: { required: true } }, messages: { myExistingInput: { required: "Enter something" } }, ignore: null, // include hidden fields (see below) submitHandler: function(form) { // do stuff }, invalidHandler: function(event, validator) { // do stuff (some of the fields may have been hidden by a collapsible panel // if there is an error on one of those fields, expand the panel so the error // becomes visible) } }); 

稍后,我动态地向表单添加字段,并为这些字段添加规则……

 $("#formName").append(...); $("#newInputName").rules("add", { required: true, messages: { required: "Enter something else" } }); 

如果我然后提交表单,我从jquery.validate中得到一个错误…

检查元素newInputName时发生exception,检查’messages’方法.TypeError:无法获取未定义或空引用的属性’call’

在浏览器中调试,我可以看到错误是从“check”函数中抛出的,而“method”变量被设置为“messages”。

如果我从规则调用中删除消息(“添加”,…

 $("#newInputName").rules("add", { required: true }); 

它按预期工作,但显然我现在没有自定义错误消息。

我在SO上看到很多例子表明我的语法是正确的。 有什么建议?

BTW:jQuery Validation Plugin – v1.11.0 – 2013年2月4日

您发布它时,您的代码似乎正常工作,没有错误。

准备好DOM的演示: http : //jsfiddle.net/UZTnE/

使用PageInit和jQuery Mobile的演示: http : //jsfiddle.net/xJ3E2/

 $(document).on("pageinit", function () { $('#myform').validate({ // initialize the plugin rules: { field1: { required: true } }, messages: { field1: { required: "Enter something" } } }); $('[name*="field"]').each(function () { $(this).rules('add', { required: true, messages: { required: "Enter something else" } }); }); }); 

HTML

 

BTW

这个…

 ignore: null, // include hidden fields 

应该…

 ignore: [], // include hidden fields 

请参阅: jQuery Validate – 启用隐藏字段的validation

 $(document).ready(function(){ $("#controlId").rules("add", { required : true, messages : { required : 'field is required.' } }); }); 

作为这个老问题的答案,我喜欢这样做以获得规则对象内的meassges。

添加规则后,您可以添加如下消息:

 var inputRules = $('input').rules(); inputRules.messages = {required: 'your message'}; 

在此处输入图像描述

祝好运!