2

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

请帮忙...

4

1 回答 1

2

I'm not sure what d is. Is it a DOM node? Then you can't call .val() on it. Is it a jQuery wrapper object? Then accessing its .value property will likely result in undefined, and the stringification of that value does not match your format.

Use some more variables, like

var value = d.val(); // to test length, regex and use in split
…
var parts = value.split("/"); // to get year, month and day part
于 2012-12-20T03:39:06.053 回答