2

( http://www.javascriptkit.com/script/script2/validatedate.shtmlから) js 日付バリデーターをコピーして変更しました。

jquery モーダル フォームの一部として使用していますが、最初の基準を超えることはできません。

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;
        }
    }

2012 年 12 月 25 日の値を入力すると、「通知日は有効な日付である必要があります」が返されます。from the updateTips( n + " は有効な日付でなければなりません。" ); ライン...

助けてください...

4

1 に答える 1

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
于 2012-12-20T03:39:06.053 に答える