1
<script type="text/javascript">
$(document).ready(function() {
    jQuery(function($){
        $("#form").submit(function(e){
           if ($(this).valid()){
                $.ajax( {
                    type: "POST",
                    url: "http://localhost/My/modules/validate.php",
                });
           }
           return false;
     })});
        $("#form").validate({
            rules: {
                user: {
                    remote: {
                        url: "http://localhost/My/modules/validate.php",
                        async: false,
                    }
                }
            }
        });
});
$.validator.setDefaults({
    debug:      true,
    success:    "valid",
});
</script>

リモート検証ルールを作成したいと考えています。この例では、ajax リクエストを正しく読み取ります。true/false を返しますが、両方とも検証エラーに評価されます。

ただし、ajax 部分 (jQuery()) を削除すると、ajax の初期化が行われず、リクエストは処理されません。

async: false はパッシブのようで、これを削除しても同じ結果になります。

ここで何が間違っているのか、誰でも少しでもわかるでしょうか?

編集:

$(document).ready(function() {
        $("#form").validate({
            rules: {
                user: {
                    remote: "http://localhost/My/modules/validate.php",
                }
            },
            submitHandler: function (form) {
                // do your ajax form submission here
                return false; // prevent redirect since you did ajax
            }
        });
});
</script>
4

1 に答える 1

2

submitValidateプラグインを使用する場合、すべてのイベントハンドラーが既に組み込まれているため 、外部ハンドラーは必要ありません。

ビルトインsubmitHandlerは、フォームが有効な場合にのみ起動され、フォームを送信するajaxためにフォームを配置します。

あなたはajax2つの場所でやっています...remoteルールとあなたのsubmitハンドラーで。

  • remoteフィールドの検証にajaxを使用する場合は、ルールを使用してください。
  • submitHandlerフォームの送信にajaxを使用する場合に使用します。

これは、ドキュメントに従ってremoteルールのみを使用しています。

$(document).ready(function () {

    $("#form").validate({
        rules: {
            user: {
                // ajax in remote rule to check this field
                remote:  "http://localhost/My/modules/validate.php"
                }
            }
        }
    });

});

// get rid of all this
//$.validator.setDefaults({
    //debug: true,  // not needed in production
    //success: "valid", // this is already the default.
//});

以下は、フォームの送信にajaxを使用している場合の私の提案にすぎません。それ以外の場合は無視してください。

ドキュメントに従って、これはコールバックを使用していsubmitHandlerます:

$(document).ready(function () {

    $("#form").validate({
        // your rules & options,
        submitHandler: function (form) {
            // do your ajax form submission here
            return false; // prevent redirect since you did ajax
        }
    });

});
于 2013-02-27T16:20:32.740 に答える