我正在以某种复杂的形式使用jquery验证。验证规则是通过为form字段分配类而在代码中添加的,但我似乎无法让它使用额外的参数。恐怕我在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'"); 它有"error“,因为额外的类‘error’显然不是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没有被解析为调用以1作为参数的myrule函数。但是我认为这是添加参数的方法,尽管我在jquery文档中很难找到正确的方法。
有人能教我怎么添加额外的参数吗?
背景:最终的目标是使用另一个字段值作为参数,因为它们彼此依赖。另一种选择当然是忘记参数和规则中的this对象以找到正确的字段。但不确定这是否可行。
发布于 2012-08-28 15:15:50
您有两个选择,两个选项都不涉及使用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/
https://stackoverflow.com/questions/12156713
复制相似问题