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'};
祝好运!