我复制并修改了一个 js 日期验证器 - 来自 ( http://www.javascriptkit.com/script/script2/validatedate.shtml )
我将它用作 jquery 模态表单的一部分,它不允许我超越第一个标准.. 即使该值是以 datepicker jquery UI 的形式放入的
function checkDate( d, n ){
if ( d.val().length > 0 ) {
var validformat = /^\d{2}\/\d{2}\/\d{4}$/; //Basic check for format validity
if ( !validformat.test( d.value ) ) {
d.addClass( "ui-state-error" );
updateTips( n + " must be a valid date." );
return false;
} else { //Detailed check for valid date ranges
var monthfield = d.value.split( "/" )[0]
var dayfield = d.value.split( "/" )[1]
var yearfield = d.value.split( "/" )[2]
var dayobj = new Date( yearfield, monthfield-1, dayfield )
if ( ( dayobj.getMonth()+1 != monthfield ) || ( dayobj.getDate() != dayfield ) || ( dayobj.getFullYear() != yearfield ) ) {
d.addClass( "ui-state-error" );
updateTips( "Invalid Day, Month, or Year range detected. Please correct and submit again." + n + " must be a valid date." );
return false;
}
}
return true;
}
}
当输入 12/25/2012 的值时,它返回...“通知日期必须是有效日期。” 来自 updateTips( n + "必须是有效日期。");线...
请帮忙...
最佳答案
我不确定d
是什么。它是一个 DOM 节点吗?那么你就无法对其调用 .val()
。它是一个 jQuery 包装对象吗?然后访问其 .value
属性可能会导致 undefined
,并且该值的字符串化与您的格式不匹配。
使用更多变量,例如
var value = d.val(); // to test length, regex and use in split
…
var parts = value.split("/"); // to get year, month and day part
关于JavaScript 日期验证错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13964887/