我看到很多帮助为我的页面上的任何字段类型编写自定义jQuery验证,但是如何编写自定义验证方法,将多个字段的值纳入考虑(交叉验证)?我认为我应该做$.validator.addMethod
来添加我的自定义方法,然后添加一个规则到验证器对象(而不是一个特定的字段),但我遇到了语法问题。谁能帮忙?如何使用jQuery进行交叉字段验证?
例如,
我有两个字段:日期和时间。我的形式是有效的只有:
- 两者都充满
- 的日期不是星期日
- 的时间是早上6点到下午6点
我看到很多帮助为我的页面上的任何字段类型编写自定义jQuery验证,但是如何编写自定义验证方法,将多个字段的值纳入考虑(交叉验证)?我认为我应该做$.validator.addMethod
来添加我的自定义方法,然后添加一个规则到验证器对象(而不是一个特定的字段),但我遇到了语法问题。谁能帮忙?如何使用jQuery进行交叉字段验证?
例如,
我有两个字段:日期和时间。我的形式是有效的只有:
您确实需要在这里一些自定义的规则之间,但每种验证方法都不需要考虑多个字段。对我来说,您需要三条不同的规则:要求适用于两个字段(已内置),然后是时间规则(6AM - 6PM)和日期规则(不能是星期日)的自定义规则:
$.validator.addMethod("notsunday", function (value, element) {
var date = Date.parse(value);
return this.optional(element) || (date && date.getDay() !== 0);
});
$.validator.addMethod("businesshours", function (value, element) {
var time = Date.parse(value);
return this.optional(element) ||
(time && (time.getHours() >= 6 && time.getHours() <= 18));
});
$(document).ready(function() {
$("#test").validate({
rules: {
date: {
required: true,
notsunday: true
},
time: {
required: true,
businesshours: true
}
},
messages: {
date: {
notsunday: "Can't be a Sunday!"
},
time : {
businesshours: "Must be between 6AM and 6PM"
}
}
});
});
例子:http://jsfiddle.net/andrewwhitaker/7KFgn/
注意,此示例使用DateJS作出解析日期更加容易。
这是我收到过的最好的答案。如果我能给你两个upvotes我会。我忽略了提到重要的规则是结果日期/时间(字段的组合)必须比现在更晚。我可以从你的例子中弄清楚如何做到这一点(通过将它附加到一个字段),但是我想知道是否有这样的事情,而不是“属于”一个字段,而是整个表单。 – 2012-02-02 03:42:29
@JeremyFoster:我会用一个组合字段验证的例子来更新我的答案 – 2012-02-02 13:54:32
你能举个例子吗?你想要执行哪种验证? – 2012-02-02 00:20:39
我有两个字段:日期和时间。我的表格只有在以下情况下才有效:a)两者都已填写b)日期不是星期日c)时间是早上6点到下午6点 – 2012-02-02 00:49:26