0

我正在以某种复杂的形式使用 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'");  

现在初始状态从一开始就是错误的:它应该是错误而不是有效,因为它不符合要求。我假设该类没有被解析为使用as 参数myrule:1调用该myrule函数的东西。1但这是我认为添加参数的方法,尽管我在 jquery-documentation 中找不到正确的方法。

谁能启发我如何添加额外的参数?

对于背景:最终目标是使用另一个字段值作为参数,因为它们相互依赖。另一种选择肯定是忘记参数和this规则中的对象以找到正确的字段。不确定这是否可行。

4

1 回答 1

2

您有两个选择,都不涉及使用该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/

于 2012-08-28T15:15:50.787 回答