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 回答