2

カスタムの日付ピッカー jQuery プラグインがあります。フォームの送信時に、日付ピッカーは選択された日付を検証して、有効かどうかを確認します。そうでない場合は、エラー メッセージが表示されます。そうでない場合は、続行してフォームを送信する必要があります。

ユーザーが最初に有効な日付を入力した場合、すべてが正常に機能します。ただし、ユーザーが無効な日付を入力した場合、エラー メッセージが表示され、ユーザーが日付を修正しても、フォームは投稿されません。そこに座っているだけです。

フォーム送信イベントを処理するコードの一部を次に示します。

        var hiddenInput = $('.custom-date-picker-value');
        var form = hiddenInput.closest('form');
        $(form).submit(function (e) {
            selectedMonth = monthSelect.find('option:selected').text();
            selectedYear = yearSelect.find('option:selected').text();
            selectedDay = daySelect.find('option:selected').text();

            $('#dateValidationMessage').html('');
            if (selectedMonth == '' || selectedDay == '' || selectedYear == '') {
                $('#dateValidationMessage').html($('#dateOfBirthRequired').val());
                e.preventDefault();
            }
            else {
                var dateValue = selectedMonth + '/' + selectedDay + '/' + selectedYear;
                var dob = new Date(dateValue);
                var modifiedDate = new Date(dob.getFullYear() + 2, dob.getMonth(), dob.getDay());
                if (modifiedDate > new Date()) {
                    $('#dateValidationMessage').html($('#AgeGreaterThan').val());
                    e.preventDefault();
                }
                else {
                    hiddenInput.val(dateValue);
                    console.log('date is valid');
                }
            }
        });

ユーザーが有効な日付を入力すると、「日付は有効です」というトレースがコンソールに出力されているのがわかりますが、何らかの理由でフォームが送信されません。

ここで何が起こっているのですか?

4

1 に答える 1

-1

してみてください

return true 

この場合、

console.log //returns undefined. 

また、一部のブラウザーではフォーム送信イベントの preventDefault にバグがあるため、変更することをお勧めします。

e.preventDefault() 

return false;
于 2012-07-04T09:33:38.613 に答える