繁体   English   中英

仅当jQuery验证插件成功时如何发送Ajax验证?

[英]How to send an ajax validation only if jQuery validation plugin succeed?

我使用jQuery验证插件来验证表单字段。 现在,我只想在字段有效时发送ajax请求,这意味着在jQuery验证插件成功之后。

JavaScript的:

 $(function(){ $("#form").validate({ errorPlacement: function(label, element) { label.addClass('arrow'); label.insertAfter(element); }, wrapper: 'span', rules: { email: { required: true, email: true }, name: { required: true, minlength: 5 }, password: { required: true, minlength: 6 }, rePassword:{ required: true, minlength: 6, equalTo: "#password" }, birthDate:{ required: true }, aboutYou:{ required: true } }, messages:{ email: { required: "this field is required!", email: "please enter a valid email!" }, name:{ required: "this field is required!", minlength: "name needs to have at least 5 chars!" }, password:{ required: "password is required!", minlength: "password needs to have at least 6 chars!" }, rePassword:{ required: "rePassword is required!", minlength: "rePassword needs to have at least 6 chars!", equalTo: "passwords don't match!" } } }); }); 
 <!DOCTYPE html> <html> <head> <title>Register</title> <meta charset="utf-8"> <script src="includes/jquery-1.11.3.js"></script> <link rel="stylesheet" type="text/css" href="css/css.css"> <script src="js/jquery.validate.js"></script> <script src="js/jquery.validate.min.js"></script> <script src="js/registerForm.js"></script> <?php require_once'includes/DAL.php'; ?> <script> $(function(){ $( "#form" ).submit(function(){ // run this code only if validation plugin succeed? $.ajax({ method: "post", url: "API.php", data:{email: $("#email").val(), name: $("#name").val(), password: $("#password").val(), rePassword: $("#rePassword").val(), birthDate: $("#birthDate").val(), aboutYou: $("#aboutYou").val()}, success: function(result){$("#div1").html(result); }}); }); }); </script> </head> <body> <form method="post" id="form"> <label>Email</label><br/> <input type="text" name="email" id="email" placeholder="Enter your email"/><br/> <label>Name</label><br/> <input type="text" name="name" id="name" placeholder="Enter your name"/><br/> <label>Password</label><br/> <input type="password" name="password" id="password" placeholder="Enter your password"/><br/> <label>re-Password</label><br/> <input type="password" name="rePassword" id="rePassword" placeholder="Repeat password"/><br/> <label>Birth Date</label><br/> <input type="date" name="birthDate" id="birthDate"/><br/> <label>About yourself</label><br/> <textarea name="aboutYou" id="aboutYou" placeholder="About yourself..."></textarea> <input type="submit" id="submit" value="Register!"/> <div id="div1"></div> </form> </body> </html> 

我猜您正在使用以下插件: http : //jqueryvalidation.org/documentation/

而您正在寻找的可能是这样的:

submitHandler (default: native form submit)
Type: Function()
Callback for handling the actual submit when the form is valid. Gets the form as the only argument. Replaces the default submit. The right place to submit a form via Ajax after it is validated.

所以你可以做这样的事情

$(".selector").validate({
  submitHandler: function(form) {
    $(form).ajaxSubmit();
  }
});

API文档: http//jqueryvalidation.org/validate

======================

如果不是您使用的插件,请查找以下内容:

“用于在表单有效时处理实际提交的回调。” 在插件API文档中。 绝对将其实现为回调或promise对象。

将函数(错误,事件)追加到您的initail验证程序插件脚本中。

$(function(){
   $("#form").validate({
       errorPlacement: function(label, element) {
        label.addClass('arrow');
        label.insertAfter(element);
        },
        wrapper: 'span',

       rules: {
           email: {
               required: true,
               email: true
           },
           name: {
               required: true,
               minlength: 5
           },
           password: {
               required: true,
               minlength: 6
           },
           rePassword:{
               required: true,
               minlength: 6,
               equalTo: "#password"
           },
           birthDate:{
               required: true
           },
           aboutYou:{
               required: true
           }

       },
       messages:{
           email: {
               required: "this field is required!",
               email: "please enter a valid email!"
           },
           name:{
               required: "this field is required!",
               minlength: "name needs to have at least 5 chars!"
           },
           password:{
               required: "password is required!",
               minlength: "password needs to have at least 6 chars!"
           },
           rePassword:{
               required: "rePassword is required!",
               minlength: "rePassword needs to have at least 6 chars!",
               equalTo: "passwords don't match!"
           }
       },
       function(errors, event) {
           if (!errors.length) _submit();
       }

   }); 
});



function _submit() {
    $( "#form" ).submit(function(){
        $.ajax({
            method: "post",
            url: "API.php", 
            data:{email: $("#email").val(), name: $("#name").val(), password: $("#password").val(), rePassword: $("#rePassword").val(), birthDate: $("#birthDate").val(), aboutYou: $("#aboutYou").val()},
            success: function(result){$("#div1").html(result);
         }});
     });
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM