我复制并修改了一个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 +“必须是有效日期。”);线...
请帮助...答案 0 :(得分:2)
我不确定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