以下列格式指定规则
rules :{
col1: {
required: true
},
col2: {
maxlength: 50
}
}
完全正常。是否可以将其分配给变量并将其添加到格式为
的规则中var testRules = "{ col1: { required: true},col2: {maxlength: 50}}";
rules : testRules
上面的代码在jquery文件中没有异常。
如果可能的话这样做。什么是正确的方法或我可以实现类似的东西?
由于
答案 0 :(得分:4)
您的代码:
var testRules = "{ col1: { required: true},col2: {maxlength: 50}}";
只需删除引号,它就能正常工作。
var testRules = { col1: { required: true},col2: {maxlength: 50}};
DEMO: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
}
}
});
DEMO :http://jsfiddle.net/rq5ra/
是的,您可以提取规则组并将它们组合成公共变量。
var ruleSet1 = {
required: true,
number: true
};
$('#myForm').validate({
rules: {
field_1: ruleSet1,
field_2: ruleSet1,
field_3: ruleSet1
}
});
DEMO :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的必填数字。DEMO :http://jsfiddle.net/rq5ra/5/
另外see this answer了解更多应用规则的方法。
答案 1 :(得分:1)
嗯,我能想到的唯一方法是使用eval(),例如:
var testRules = "{ col1: { required: true},col2: {maxlength: 50} }";
var obj=eval("("+testRules+")");
console.log( obj );