jquery验证中的额外参数

时间:2012-08-28 09:48:31

标签: jquery validation jquery-validate

我正在以一种复杂的形式使用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对象来查找正确的字段。不确定这是否可行。

1 个答案:

答案 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/