使用jQuery验证在提交前进行AJAX提交。

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;

});

正确的做法是使用submitHandler - 它会在表单提交且有效时触发。你现在的做法会多次进行验证。 - Ryley
3个回答

2
我认为您应该使用JQuery验证器的提交处理程序,如下所示:
$('#id_of_form').validate(){

    // rules and messages

    submitHandler: function(form) {

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

    }
}

1

我认为你应该从表单标签中删除onsubmit事件,并在document.ready()中编写以下脚本

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

希望这能解决你的问题。


1
我对您的代码进行了一些小修改,现在它完美地运行了。非常感谢您。 - khalonn

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() {

                });
        }
    });

敬礼。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接