我使用jquery.validate.js来验证表单中的值,无论是文本还是数字,如果长度小于或大于......所有这些都可以正常工作甚至一些自定义规则,但是,我需要在提交表单之前比较几个值...
我需要确保" date"并不比当前日期更重要
现在,收集日期我只需要使用两个输入字段作为"数字"来确定月份和年份
以下查询可以正常验证长度,文本和数字......
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 =年份
任何帮助都会非常感激。
答案 0 :(得分:0)
我认为您可以使用其他自定义方法执行此操作:
$.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
}
},