0

我以以下格式指定规则

rules :{ 
col1: { 
required: true
},
col2: {
maxlength: 50
}
}

这完全可以正常工作。是否可以将其分配给变量并将其添加到如下格式的规则中

var testRules = "{ col1: { required: true},col2: {maxlength: 50}}";

rules : testRules

上面的代码没有工作,在 jquery 文件中出现异常。

如果可能的话,这样做。什么是正确的方法,或者我可以实现类似的东西吗?

谢谢

4

2 回答 2

5

你的代码:

var testRules = "{ col1: { required: true},col2: {maxlength: 50}}";

只要去掉引号就可以了。

var testRules = { col1: { required: true},col2: {maxlength: 50}};

演示:http: //jsfiddle.net/mNtcL/


就我的示例而言,这是基本的起始代码:

HTML:

<input type="text" name="field_1" />
<input type="text" name="field_2" />
<input type="text" name="field_3" />

JS:

$('#myForm').validate({
    rules: {
        field_1: {
            required: true,
            number: true
        },
        field_2: {
            required: true,
            number: true
        },
        field_3: {
            required: true,
            number: true
        }
    }
});

演示:http: //jsfiddle.net/rq5ra/


是的,您可以提取规则组并将它们组合成公共变量。

var ruleSet1 = {
        required: true,
        number: true
    };

$('#myForm').validate({
    rules: {
        field_1: ruleSet1,
        field_2: ruleSet1,
        field_3: ruleSet1
    }
});

演示:http: //jsfiddle.net/rq5ra/4/


您还可以用.extend()无数种方式重新组合它们。

var ruleSet_default = {
        required: true,
        number: true
    };

var ruleSet1 = {
        max: 99
    };
$.extend(ruleSet1, ruleSet_default); // combines defaults into set 1

var ruleSet2 = {
        min: 3
    };
$.extend(ruleSet2, ruleSet_default); // combines defaults into set 2


$('#myForm').validate({
    rules: {
        field_1: ruleSet2,
        field_2: ruleSet_default,
        field_3: ruleSet1
    }
});

最终结果:

  • field_1将是一个不小于 3 的必需数量。
  • field_2将只是一个必需的数字。
  • field_3将是不大于 99 的必需数字。

演示:http: //jsfiddle.net/rq5ra/5/

请参阅此答案以了解更多应用规则的方法。

于 2013-10-22T13:45:26.860 回答
1

好吧,我能想到的唯一方法是使用eval(),例如:

var testRules = "{ col1: { required: true},col2: {maxlength: 50} }";
var obj=eval("("+testRules+")");
console.log( obj );
于 2013-10-22T10:13:43.617 回答