Ian*_*hop 8 validation jquery jquery-validate jquery-ui-datepicker
我在包含两个jQuery UI DatePickers的表单上进行了一些基本验证.日期格式为yy-mm-dd.有一个必要的和日期上都DatePickers验证.
这些在Chrome和FF中按预期工作,但在IE7/IE8中触发漏报(有效输入被认为无效).
日期选择器设置:
$('.datepicker').datepicker({
dateFormat: 'yy-mm-dd'
});
Run Code Online (Sandbox Code Playgroud)
这是无关的,但我想我会包括,以防万一:
$.validator.addMethod("endDate", function(value, element) {
var startDate = $('#startDate').val();
return Date.parse(startDate) <= Date.parse(value);
});
Run Code Online (Sandbox Code Playgroud)
实际验证:
$('#ExampleForm').validate({
rules: {
StartDate: {
required: true,
date: true
},
EndDate: {
required: true,
date: true,
endDate: true
}
},
messages: {
StartDate: {
required: "Start Date required",
date: "Invalid date. Must be formatted yyyy-mm-dd"
},
EndDate: {
required: "End Date required",
date: "Invalid date. Must be formatted yyyy-mm-dd",
endDate: "Start date must occur before end date."
}
},
errorPlacement: function(error, element) {
error.appendTo(element.parent().next());
},
submitHandle: function(form) {
form.submit();
}
});
Run Code Online (Sandbox Code Playgroud)
在IE7/IE8中,使用两个DatePickers的有效输入(仅选择日期)将导致日期错误("无效日期.必须格式化为yyyy-mm-dd").这在其他浏览器中不会发生.
它也不会产生任何Javascript错误.
提前致谢,
伊恩
And*_*ker 13
我想你正在寻找dateISO选择:
$('form').validate({
rules: {
StartDate: {
required: true,
dateISO: true
},
EndDate: {
required: true,
dateISO: true
}
},
messages: {
StartDate: {
required: "Start Date required",
dateISO: "Invalid date. Must be formatted yyyy-mm-dd"
},
EndDate: {
required: "End Date required",
dateISO: "Invalid date. Must be formatted yyyy-mm-dd"
}
},
submitHandler: function(form) {
form.submit();
}
});
Run Code Online (Sandbox Code Playgroud)
IE不会以yyyy-mm-dd格式解析日期,这就是为什么date在IE中使用常规失败的原因.我相信jQuery验证只是使用Date.parse或new Date(dateString)检查有效性.要检查这一点,请尝试执行new Date("1987-11-14")并警告IE和FF中的值.你将进入NaNIE和FF中的日期对象.
这是一个有效的例子:http://jsfiddle.net/andrewwhitaker/QqSrJ/2/