Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/376.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jQuery默认在POST之前进行验证_Javascript_Jquery_Forms - Fatal编程技术网

Javascript jQuery默认在POST之前进行验证

Javascript jQuery默认在POST之前进行验证,javascript,jquery,forms,Javascript,Jquery,Forms,我有以下代码块: $(document).ready(function(){ $("#form").submit(function(ev) { ev.preventDefault(); $.ajax({ type: "POST", url: "proxy.php", data: postData,

我有以下代码块:

  $(document).ready(function(){
  $("#form").submit(function(ev) {
                ev.preventDefault();

   $.ajax({
                        type: "POST",
                        url: "proxy.php",
                        data: postData,
                        success: function(data) {
                                 window.location = "thankyou.php";
                        },
                        error:function(xhr, ajaxOptions, thrownError){
                                 console.log(xhr.responseText);
                        }
                });
      });

  $("#form").validate({

        //a bunch of validation here
  });
});

问题是,即使某些验证失败,这将继续使用ajax发布。。为什么会这样?我使用ev.preventDefault()的方式是否错误?我想要的是,在发送帖子之前对表单进行验证,如果验证失败,那么只需取消,我相信这是通过ev.preventDefault()?

在执行ajax请求之前,测试表单是否有效:

if (!$(this).valid()) return;

您可能也想尝试submitHandler选项:

在执行ajax请求之前,测试表单是否有效:

if (!$(this).valid()) return;

您也可以尝试submitHandler选项:

验证设置中,您可以指定使用函数的
submitHandler。您可以在submitHandler中使用所有验证登录,并有条件地返回true/false。在submitHandler中返回
false
,则不会提交表单。试试这个

$("form").validate({
    submitHandler: function(form) {
        // if validation is successfull return true else false.
    }
});

validate
设置中,您可以指定接受函数的
submitHandler
。您可以在submitHandler中使用所有验证登录,并有条件地返回true/false。在submitHandler中返回
false
,则不会提交表单。试试这个

$("form").validate({
    submitHandler: function(form) {
        // if validation is successfull return true else false.
    }
});