如何用jQuery进行跨领域验证?

时间:2012-02-01 23:55:01

标签: jquery asp.net-mvc jquery-validate

我看到很多帮助为我页面上的任何类型的字段编写自定义jQuery验证,但是我如何编写一个自定义验证方法,将多个字段的值考虑在内(跨文件验证)?我我应该$.validator.addMethod添加我的自定义方法,然后将规则添加到验证器对象(而不是特定字段),但我遇到了麻烦句法。有人可以帮忙吗?

例如,

我有两个字段:日期和时间。我的表格仅在以下情况下有效:

  1. 两者都已填写
  2. 日期不是星期日
  3. 时间是早上6点到下午6点

1 个答案:

答案 0 :(得分:1)

您确实需要一些自定义规则,但每种验证方法都不需要考虑多个字段。在我看来,您需要三个不同的规则:必需应用于两个字段(已经内置),然后是时间规则的自定义规则(早上6点 - 下午6点)和日规则(不能是星期日):

$.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来简化日期分析。