Javascript jQuery验证:抽象规则
Im使用jQuery的验证,可在此处找到: 我目前有一些“自定义”规则,如下所示:Javascript jQuery验证:抽象规则,javascript,jquery,jquery-validate,Javascript,Jquery,Jquery Validate,Im使用jQuery的验证,可在此处找到: 我目前有一些“自定义”规则,如下所示: else if(valID =="#shipForm") { $("#fName").rules("add",{regexName: "^[a-zA-Z]+(([\'\-][a-zA-Z])?[a-zA-Z]*)*$",minlength: 2,messages:{minlength:"Must be 2 characters."}}); $("#l
else if(valID =="#shipForm")
{
$("#fName").rules("add",{regexName: "^[a-zA-Z]+(([\'\-][a-zA-Z])?[a-zA-Z]*)*$",minlength: 2,messages:{minlength:"Must be 2 characters."}});
$("#lName").rules("add",{regexName: "^[a-zA-Z]+(([\'\-][a-zA-Z])?[a-zA-Z]*)*$",minlength: 2,messages:{minlength:"Must be 2 characters."}});
$("#sAdd1").rules("add",{stringCheck: "",minlength:2,messages:{minlength:"Enter your complete street address."}});
$("#sAdd2").rules("add",{stringCheck: ""});
$("#city").rules("add",{stringCheck: "",minlength:2,messages:{minlength:"Enter the full name of your city"}});
$("#zipcode").rules("add",{stripZip: ""});
$("#phoneIn").rules("add",{stripPhone: "",maxlength:15,messages:{maxlength:"Phone number exceeds allowed length"}});
$("#altPhone").rules("add",{stripPhone: ""});
$("#state").rules("add",{checkMenu: ""});
$("#country").rules("add",{checkMenu: ""});
}
我希望做的事。。正在抽象.rules并能够从函数中获取它们。我的问题是它们不仅仅是字符串,所以我不知道如何从另一个函数中获取信息并填充.rules(“规则的传递值”)
这不起作用,但这是一个我希望的例子
function getRule(rule)
{
switch (rule)
{
case "fName":
return "\"add\",{regexName: \"^[a-zA-Z]+(([\'\-][a-zA-Z])?[a-zA-Z]*)*$\",minlength: 2,messages:{minlength:\"Must be 2 characters.\"}}";
break;
}
}
但我显然不能把一个字符串传回去,然后再把它放回规则中
有什么想法吗?您可以将规则存储在地图中:
var rules = {
fName: {
regexName: "^[a-zA-Z]+(([\'\-][a-zA-Z])?[a-zA-Z]*)*$",
minlength: 2,
messages: {
minlength: "Must be 2 characters."
}
},
lName: { // ... }
// ...
};
并将其全部应用于:
for (var id in rules) {
$("#" + id).rules("add", rules[id]);
}
注意:返回后不需要中断
注2:为便于阅读,请包装并缩进对象文字。您可以返回一个对象
function getRule(rule)
{
switch (rule)
{
case "fName":
return {
param1 : "add",
param2 : {
regexName: "^[a-zA-Z]+(([\'\-][a-zA-Z])?[a-zA-Z]*)*$",
minlength: 2,
messages:{
minlength:"Must be 2 characters."
}
}
};
}
}
现在,如果调用getRule,它将返回如下对象
var myruleDef = getRule(rule);
$(selector).rules(myruleDef.param1, myruleDef.param2);
考虑到它的使用方式,可能返回一个数组而不是一个对象?这样他就可以直接打电话给.rules(myruleDef)
不?谢谢你的留言。我来研究一下这个方法