jquery验证不会停止提交表单

Mat*_*att 3 jquery jquery-validate

我在这里撕扯我的头发试图获得一个jquery验证,以便与我的表单很好地配合.

验证似乎不起作用.表单只是提交给页面.我可以简单地看到页面提交之前出现的验证错误消息...

我的代码:

//HTML form
<form id="form_scheduleEvent" name="form_scheduleEvent">
  <label for="name">Name:</label><input class="short" type="text" name="name" id="name" />
  <label for="address">Address:</label><input type="text" name="address" id="address" />
  <label for="phone">Phone:</label><input type="text" name="phone" id="phone" />
  <label for="comments">Comments:</label><textarea name="comments" id="comments" /></textarea>
  <input type="submit" id="submitRequest" value="Add"/>
</form>


//jquery
//Validation rules
$('#form_scheduleEvent').validate({
rules: {
    name : {required: true, maxlength: 45},
    address : {required: true, maxlength: 45},
    phone : "required"
}
});


$('#submitRequest').click(function(){
   $.ajax({
       type: "POST",
       url: "common/ajax_event.php",
       data: formSerialized,
       timeout:3000,
       error:function(){alert('Error');},
       success: function() {alert('It worked!');}
  });

 return false;
});
Run Code Online (Sandbox Code Playgroud)

我尝试更新到jquery和jquery.validation的最新版本....

任何帮助,将不胜感激!谢谢.

更新

//The validation is working, but I can't even get the alert to show....
$('#form_scheduleEvent').validate({
 rules: {
   name : {required: true, maxlength: 45}, 
   address : {required: true, maxlength: 45},
   phone : "required",
   submitHandler: function(){
     alert('test');
   }
 }
});
Run Code Online (Sandbox Code Playgroud)

Mat*_*att 6

谢谢大家的回复。

我最终将原始代码的 ajax 调用部分包装在以下代码中:

if($('#form_scheduleEvent').valid() == true){
  //Process ajax request...
}
return false;
Run Code Online (Sandbox Code Playgroud)


Pad*_*ddy 5

您应该将您的AJAX提交调用移动到由validate插件中的submit回调触发:

$('#form_scheduleEvent').validate({
rules: {
    name : {required: true, maxlength: 45},
    address : {required: true, maxlength: 45},
    phone : "required",
    submitHandler: function(form) { DoSubmit(); }
}
});


function DoSubmit(){
   $.ajax({
       type: "POST",
       url: "common/ajax_event.php",
       data: formSerialized,
       timeout:3000,
       error:function(){alert('Error');},
       success: function() {alert('It worked!');}
  }
Run Code Online (Sandbox Code Playgroud)


Jos*_*off 5

如果您放置了没有匹配方法的规则,则可能会发生这种情况,请参阅并投票支持我的错误报告。https://github.com/jzaefferer/jquery-validation/issues/1212