使用 jquery 验证提交前比较值

Compare values before submitting using jquery validate

我正在使用 jquery.validate.js 来验证我表单中的值,无论是文本还是数字,如果长度小于或大于......即使是一些自定义规则,所有这些都工作正常,但是,我在提交表单之前需要比较一些值...
我需要确保 "date" 不晚于当前日期。
现在,为了收集日期,我只使用两个输入字段 "numbers".
询问月份和年份 以下查询可以正常验证长度、文本和数字...

jQuery.validator.addMethod("doceMeses", function(value, element) {
    return this.optional(element) || (parseFloat(value) < 12);
}, "can not be grater than 12");
jQuery.validator.addMethod("anioThis", function(value, element) {
    var d = new Date();
    var y = d.getFullYear();
    return this.optional(element) || (parseFloat(value) <= y);
}, "Can not be grater than current year");

    $().ready(function() {
    var validator = $("#cotiza_f").bind("invalid-form.validate", function() {
        $("#summary").html("The form has " + validator.numberOfInvalids() + " errors.");
    }).validate({
        debug: false,
        errorElement: "em",
        errorContainer: $("#warning, #summary"),
        errorPlacement: function(error, element) {
            error.appendTo(element.parent("div").next("div"));
        },
        success: function(label) {
            label.text("ok!").addClass("success");
        },

    rules: {
            nombre: {
                 required: true,
                minlength: 2,
                maxlength: 100

            },
            ap_pa: {
                required: true,
                minlength: 2,
                maxlength: 100
            },
            ap_ma: {
                required: true,
                minlength: 2,
                maxlength: 100
            },
            va_fac: {
                required: true,
                minlength: 2,
                maxlength: 8,
                number: true
            },
            fe_com_m: {
                required: true,
                minlength: 2,
                doceMeses: true,
                number: true
            },
            fe_com_y: {
                required: true,
                minlength: 4,
                anioThis: true,
                number: true
            }
        }
    });
});

正如我之前所说的那样工作正常,如果所有内容均已正确填写,则表单将被提交,但我需要确保月份不能大于当前日期,仅当使用当前年份时,即当前日期是 01/2015,但是,02/2015 不行,或者 01/2016 不行,01/1988 可以……你明白了……

fe_com_m = 月
fe_com_y = 年

如有任何帮助,我们将不胜感激。

我想你可以用另一种自定义方法来做到这一点:

$.validator.addMethod("sameYear", function (value, element, param) {
    if (this.optional(element)) {
        return true;
    }

    var today = new Date();
    if ($(param).val() == today.getFullYear()) {
        return parseFloat(value) <= (today.getMonth() + 1);
    }
    return true;
}, "Cannot be in the future!");

您还需要这样的规则(假设您在年份输入中有 id="fe_com_y"):

    fe_com_m: {
        required: true,
        minlength: 2,
        doceMeses: true,
        number: true,
        sameYear: {
            param: '#fe_com_y', //this fills the param above
            depends: '#fe_com_y:filled' //this only calls it if the year is filled
        }
    },

看到它在这里工作:http://jsfiddle.net/ryleyb/f5uweuk5/