我正在以一种复杂的形式使用jquery验证。通过将类分配给表单字段,在代码中添加了验证规则,但我似乎无法使用额外的参数。我担心jQuery文档没有太多运气。
下面是一个对我有用的例子,什么不适用,这个例子显然不是很有用。
工作(除a
以外的任何内容时显示错误)
(伪代码)
$fieldXclasses = "myrule";
生成HTML
<input id="x" name="x" value="fromdatabase" class="myrule error" type="text">
js方法:
jQuery.validator.addMethod("myrule", function(value, element) {
return this.optional(element) || /^a$/.test(value);
}, "Please enter 'a'");
它有“错误”作为额外的类,因为'fromdatabase'显然不是a
,所以它失败了“myrule”函数。当我在字段中输入a
时,它会按预期更改为class="docnmr valid"
。我对此的看法是,我的验证设置适用于简单的情况,因此我不需要在加载验证插件时查找错误。
无效:
(伪代码)
$fieldXclasses = "myrule:1";
生成HTML
<input id="x" name="x" value="fromdatabase" class="myrule:1 valid" type="text">
js方法:
jQuery.validator.addMethod("myrule", function(value, element,param) {
return this.optional(element) || /^a$/.test(value);
}, "Please enter 'a'");
现在初始状态从开始就是错误的:它应该是错误而不是有效,因为它不符合要求。我假设类myrule:1
未被解析为以myrule
为参数调用1
函数的东西。但这就是我认为添加参数的方法,尽管我在jquery文档中找不到正确的方法。
任何人都可以启发我如何添加额外的参数吗?
对于背景:最后目标是使用另一个字段值作为参数,因为它们依赖于彼此。另一种选择可能是忘记参数,并使用规则中的this
对象来查找正确的字段。不确定这是否可行。
答案 0 :(得分:1)
您有两个选择,两个选项都不涉及使用class
属性。您只需在输入中指定myrule="1"
之类的属性和值,即可完成所需操作:
<input id="x" name="x" value="fromdatabase" myrule="1" type="text">
或者,在验证调用中,您可以指定如下规则:
$('form').validate({
...
rules: {
...
x: {
myrule: 1
},
...
}
});
有关第一种方法的简单示例,请参阅此处:http://jsfiddle.net/ryleyb/2E6k9/