6

jQueryの教科書が提供する問題を解決しようとしています。このように読みます

「エントリが作成されていないにもかかわらず、データが送信されます。これを修正するには、送信ボタンのデフォルト アクションを停止する必要があります。そのためには、イベント オブジェクトの preventDefault メソッドを、ファイルの最後の if ステートメントでコーディングします。図10-6のように

注*本が示唆するように、コードの最後にタグを付けると、10-6でコードがどのように見えるかが機能しません。

if (isValid == false) { event.preventDefault(); }

イベント オブジェクトに使用する名前は、送信イベント ハンドラーに使用されるパラメーターの名前と同じでなければならないことに注意してください。

注*送信イベントハンドラーは次のようになります

    $("#email_form").submit(
    function() {
        var isValid = true;

                      // the script proceeds to validate each text field accordingly                    bla bla bla

ここで、空のフィールドで再度テストします。これにより、郵便番号フィールドを除く各フィールドの右側に「このフィールドは必須です」と表示されます。

私の問題は、preventDefault が機能せず、何を試しても送信されることです。

図 10-6 を説明するテキストからの興味深い注記は役立つかもしれませんが、私にはよくわかりません。

「isValid 変数が false の場合に true となる最後の if ステートメントが表示されます。これは、1 つ以上のフィールドが無効であることを意味します。その場合、イベント オブジェクトの preventDefault メソッドが実行されます。このオブジェクトは、関数 for に渡されます。このハンドラーの最初の行でイベント変数に格納されるパラメーターとしての送信イベント ハンドラー. 1 つ以上のフィールドがサーバーに送信されるときに preventDefault メソッドを使用しない場合、フォームはサーバーに送信されます。それがデフォルトのアクションです。」

どんな洞察も大歓迎です。

4

2 に答える 2

9

変数は、eventハンドラーに渡す必要があるものです。匿名関数は変数function(){}を受け取る必要があります。event

$("#email_form").submit(function(event){
    var isValid = true;

    // do all your validation here
    // potentially if one of the fields is empty 
    // isValid will be set to false

    if (!isValid) {
        event.preventDefault();
    }
});
于 2013-02-27T02:17:44.573 に答える
0

今日の授業で、答えは実はこのようなものだと学びました。

$("#email_form").submit(
function(event) {
    var isValid = true;

検証の最後に私の機能が必要でした(以下)...

if (isValid == false) { event.preventDefault(); }

送信ボタンのイベント ハンドラーでイベントを操作します。

于 2013-02-27T20:08:17.520 に答える