3

次の jQuery 検証コードを含む簡単なサインアップ フォームがあります。

$(document).ready(function(){

    $("#registerForm").validate({

    rules: {

    Username: {required: true, minlength: 6},   
    Password: {required: true, minlength: 6},
    re_Password: {required: true, equalTo: "#Password"} 

    },

    });     
});

フォームを送信する前に正しく検証されます。

フォームが検証されなくなり、検証なしで送信されるため、フォームの AJAX 送信も行いたい場合に問題が発生します。

<form id="registerForm" action="register.php" method="post" onsubmit="xmlhttpPost('register.php', 'registerForm', 'signup-box'); return false;">

動作するデフォルトは次のとおりです。

<form method="post" id="registerForm" action="register.php">

誰かが私を正しい方向に向けたり、これを解決するための出発点を教えてくれたりしたら、私は感謝します.

ありがとう。


Kundan Singh Chouhan のおかげで、document.ready ブロックに次のコードを追加するソリューションを見つけました。

$("#registerForm").submit(function(){

    if($("#registerForm").valid()){

        xmlhttpPost('register.php', 'registerForm', 'signup-box'); 

   }

return false;

});
4

3 に答える 3

2

次のように、JQuery Validator の送信ハンドラーを使用する必要があると思います。

$('#id_of_form').validate(){

    // rules and messages

    submitHandler: function(form) {

    // place your code for Ajax Request here...

    }
}
于 2016-05-23T07:47:21.920 に答える
1

フォームタグから onsubmit イベントを削除し、以下のスクリプトを document.ready() に記述する必要があると思います

$("form").submit(function(){
   if($("form").validate()){
      xmlhttpPost('register.php', 'registerForm', 'signup-box'); 
   }
   return false;
});

これで問題が解決することを願っています。

于 2012-07-28T19:36:34.750 に答える
0

jQuery.Validationを使用できます。サンプル コードを次に示します。

    var $form = $("form");
    $form.validate({
        rules: {
            Username: {required: true, minlength: 6},   
            Password: {required: true, minlength: 6},
            re_Password: {required: true, equalTo: "#Password"} 
        },
        invalidHandler: function(event, validator) {
            // 'this' refers to the form
            var errors = validator.numberOfInvalids();
            if (errors) {
                var message = errors === 1
                  ? 'You missed 1 field. It has been highlighted'
                  : 'You missed ' + errors + ' fields. They have been highlighted';  
            }
        },
        submitHandler: function (form) {

            var $form = $(form);
            $.ajax({
                url: destinationUrl,
                method: "POST",
                data: $form.serialize()
                })
                .done(function (result) {
                    // show some message, etc...

                    return false; // blocks redirect after submission via ajax
                })
                .fail(function (response, error) {
                    // failed
                })
                .always(function() {

                });
        }
    });

よろしく。

于 2016-04-19T20:43:07.360 に答える