1

私のフォームには、送信する前に検証する必要がある入力が 1 つあります。検証が成功した後、フォームを送信しようとしましたが、送信されません。

私のコードは次のようになります。

$(document).ready(function() {
    $("#myForm").submit(function () {
        checkInputData();
        return false;  // to prevent default submit
    });
});

検証関数:

function checkInputData() {
    var id = $($("#id")).val();  // value, which needs to be validated
    $.get("check.php?id=" + id,  
        function(result){  
            if(result == 1) {  
                //if the result is 1, need to submit
                $("#myForm").unbind(); // to prevent recursion?
                $("#myForm").submit(); // doesnt work
            } else {  
                // dont submit, give some visual feedback, etc...
            }  
    });
}

私は何を間違っていますか?ありがとう。

4

4 に答える 4

4

AJAX 検証リクエストから結果を返す必要があります。これは、このチェックを being に設定することで実行できます。これは、 が結果が返されるasync: falseのを待つことを意味しcheckInputData()、フォームの送信を制御して結果を返すことができます。

あなたのコードでは、アクションが発生するのを待っていません$.get。スキップしているように見えます。つまり、コードは常に呼び出しreturn true;から表示されcheckInputData()ます。return false以下のように使用する場合は、送信する必要はありません。

プロパティを制御できるため$.ajax、代わりに呼び出しを使用しましたが、本質的に同じことを行います。詳細については、こちらをご覧ください。$.getasync

function checkInputData() {
    var value = $("#id").val();  // Value to be validated
    var passedValidation = false;
    $.ajax("check.php?id=" + value, {
        async: false,
        success: function(result){
            // Do whatever check of the server data you need here.
            if(result == "1") {  
                // Good result, allow the submission
                passedValidation = true;
            } else {
                // Show an error message
            }
        }
    });
    return passedValidation;
}

$(document).ready(function() {
    $("#myForm").on("submit", function () {
        return checkInputData();
    });
});

id を持つフォーム内に、以下のようなボタンがあると仮定しますmyForm

<input type="submit" value="Submit Form" />
于 2013-07-14T13:45:43.060 に答える
-1
       $(document).ready(function() {
            $("#myForm").submit(function (e) {
                checkInputData();
                //return false;  // to prevent default submit <-- THIS IS WRONG


                e.preventDefault(); //Try this :)
            });
        });

false を返すと、すべての場合に送信できなくなります。

于 2013-07-14T13:19:45.247 に答える