0

この質問は他の質問と非常によく似ていますが、正確ではないため、慎重に従ってください。

誕生日などのフィールドで datePicker を使用しています。範囲を過去の日付のみに制限しています。日付を確認する必要があります。入力は読み取り専用ではなく、そうであってほしくありません。

$(element).datepicker({
        dateFormat: dateFormat,
        changeMonth: true,
        changeYear: true,
        yearRange: "1900:2050",
        maxDate: new Date,
        constrainInput: "true",
        currentText:"Today",
        showButtonPanel: true,
        onClose: function (dateText, inst){
            dPickerDate=$('#'+this.id).datepicker("getDate");
            pDate=$.datepicker.formatDate(dateFormat, dPickerDate);
            if(dateText!=pDate)
                {
                $('#errorFor'+this.id).removeClass("hidden");
                }
            else
                {
                    //do some calculations to save the date... for internal purposes
                                    }

    });

アイデアは、入力された日付が日付ピッカーで選択可能かどうかを確認することです-そうでない場合は無効であることを意味します。検証目的では問題なく動作します。

問題は、datePicker を使用すると、日付範囲外の日付を入力できることです。fireBug でデバッグすると、datePicker の値が実際には無効な将来の日付であることがわかりますが、datePicker に選択されたとおりに表示されません。

何か案は?前もって感謝します :)

4

1 に答える 1

0

はい、入力検証を行っていないためです。yearRange が 1900:2050 であっても、ユーザーがキーボードで入力して他の年を入力できないわけではありません。日付フィールドを読み取り専用にして、datepicker ui のみがアクセスできるようにするか、ユーザーが入力した日付をチェックする関数を作成することをお勧めします。

于 2013-02-03T11:18:23.217 に答える