0

アップデート..

コードが機能するようになりました

フォーム送信時に検証ステートメントを変更する必要がありました。有効な変数などを削除しましたが、現在は機能していますありがとうございます

送信時に修正

$('form').on("submit", function(e) {

            //Prevent default
            e.preventDefault();

                    if(validateName() & validateSubject() & validateEmail() & validateMessage())
                    {
                        $('form #status').removeClass().addClass('processing').html('Processing...').fadeIn('fast');

                        // maak variable met alle data die verstuurd kan worden
                        var formData = $('form').serialize();

                        //functie om data naar server te sturen
                        submitForm(formData);
                        return true;
                    }

                    else
                    {
                        $('form #status').removeClass().addClass('error')
                            .html('<strong>Form is not filled in correctly</strong>').fadeIn('fast')
                        return false;
                    }

            });
4

1 に答える 1

1

あなたの問題はあなたがあなたのフォームの提出を妨げていないということです。代わりに、[送信]ボタンをフックして、問題がある場合はエラーメッセージを表示します(ただし、フォームはとにかく送信されるため、エラーメッセージは役に立ちません)。

これを解決するためにできる/すべきことがいくつかあります。まず、(送信ボタンのクリックイベントではなく)フォームの送信イベントに検証コードを添付することをお勧めします。これにより、将来フォームを送信する他の方法を提供する場合に、各メソッドの検証フックを個別に維持する必要がなくなります。したがって、代わりに:

$('form #submit').click(function(e) {

あなたはおそらく欲しい:

$('form').on("submit", function(e) {

次に、フォームに問題がある場合falseは、送信ハンドラーに戻ります。これにより、暗黙的e.preventDefault()にフォームの送信が停止されます。

if (valid != '') {
    $('form #status').removeClass().addClass('error')
        .html('<strong>Correct these errors<BR></strong>' + valid).fadeIn('fast');
    return false; //stop form submission
    //Or you could do e.preventDefault(); if you're not ready to end the function yet.
}

それはあなたの最も差し迫った問題を解決するはずです。それを続けてください!

于 2012-09-14T17:47:58.383 に答える