javascript日期验证错误

时间:2012-12-20 03:34:27

标签: javascript jquery-ui

我复制并修改了一个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 +“必须是有效日期。”);线...

请帮助...

1 个答案:

答案 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