我看到很多幫助爲我的頁面上的任何字段類型編寫自定義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