【发布时间】:2014-08-14 08:12:43
【问题描述】:
我正在输入出生日期和死亡日期。需要验证
- 死亡日期应早于出生日期
- 日期格式为 dd/mm/yyyy
- 日期小于或等于今天。
验证没有按预期工作,无法找出问题所在。请帮忙。
使用的JS库
- 日历/日期选择器的 JQuery UI
- JQuery 验证表单验证
-
验证库的其他方法
var today = new Date(); var authorValidator = $("#itemAuthorForm").validate({ rules : { dateOfBirth : { required : false, date : true, dateITA : true, dateLessThan : '#expiredDate' }, expiredDate : { required : false, date : true, dateITA : true, dateGreaterThan : "#dateOfBirth" } }, onfocusout : function(element) { if ($(element).val()) { $(element).valid(); } } }); var dateOptionsDOE = { maxDate : today, dateFormat : "dd/mm/yy", changeMonth : true, changeYear : true, onClose : function(selectedDate) { $("#dateOfBirth").datepicker("option", "maxDate", selectedDate); } }; var dateOptionsDOB = { maxDate : today, dateFormat : "dd/mm/yy", changeMonth : true, changeYear : true, onClose : function(selectedDate) { $("#expiredDate").datepicker("option", "minDate", selectedDate); } }; jQuery.validator.addMethod("dateGreaterThan", function(value, element, params) { if ($(params).val() === "") return true; if (!/Invalid|NaN/.test(new Date(value))) { return new Date(value) > new Date($(params).val()); } return isNaN(value) && isNaN($(params).val()) || (Number(value) > Number($(params).val())); }, 'Must be greater than {0}.'); jQuery.validator.addMethod("dateLessThan", function(value, element, params) { if ($(params).val() === "") return true; if (!/Invalid|NaN/.test(new Date(value))) { return new Date(value) < new Date($(params).val()); } return isNaN(value) && isNaN($(params).val()) || (Number(value) < Number($(params).val())); }, 'Must be less than {0}.'); $("#expiredDate").datepicker( $.extend({}, $.datepicker.regional['en-GB'], dateOptionsDOE)); $("#dateOfBirth").datepicker( $.extend({}, $.datepicker.regional['en-GB'], dateOptionsDOB));
【问题讨论】:
-
当你写的时候:dateFormat : "dd/mm/yy" 是否还包括"dd.mm.yy" 和"dd-mm-yy" ??
-
我使用了简化正则表达式:jQuery.validator.addMethod("checkDateOfBirth", function(value) { return value.match(/^(0[1-9]|1[012])[ - /.](0[1-9]|[12][0-9]|3[01])[- /.](19|20)\d\d$/); }, "无效日期" );月(1-12)日(1-31)年(19xx - 20xx)
标签: javascript jquery validation date datetime