我有几个联系表单,它们都使用相同的方法来使用jQuery Validate验证表单内容。有些页面需要其他页面不需要的字段。我需要使用IF语句来检测它是哪个页面,如果页面需要该字段,那么它应该在调用validate()方法时添加到rules参数中。
有人能给我一个如何做到这一点的例子吗?这就是我需要做的事情(显然不起作用)。由于所有空格,我无法在上面的var中声明规则的所有内容:
$("#contactForm").validate( {
rules: {
name: {
required: true
},
phone: {
required: true
},
if ( page === "contactJoe" ) {
subject: {
required: true
},
}
email: {
required: true,
email: true
}
}
});
答案 0 :(得分:1)
如果你有一个名为
的方法怎么办? function SetupValidation(options){
var defaults = {<defaults for program>};
var settings = $.extend({}, defaults, options);
return settings;
}
然后每个页面都可以使用它所需的任何内容调用SetupValidation(电话,电子邮件等),您可以让“基本”页面使用此方法返回的设置值。
这将采用您的默认选项并合并您传入的任何选项。
例如,如果Phone默认设置为“true”而您传入“False”,则会更改为False。
答案 1 :(得分:1)
我会为每个页面使用一组单独的规则,但是如果你想坚持这种方法,这将适用于你的例子:
$("#contactForm").validate( {
rules: {
name: {
required: true
},
phone: {
required: true
},
subject: {
required: page === "contactJoe"
},
email: {
required: true,
email: true
}
}
});
如果主题需要针对多个页面显示,我该怎么做?
subject: {
required: page === "a" || page === "b" || page === "c"
}
// or
var subjectRequiredPages = ["a", "b", "c"];
// ...
subject: {
required: $.inArray(page, subjectRequiredPages) !== -1
}
// or
var subjectPages = {a: true, b: true, c: true};
// ...
subject: {
required: subjectPages[page]
}