javascript - jQuery preventDefault 在 POST 之前进行验证

标签 javascript jquery forms

我有以下代码块:

  $(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() 的方式不对吗?我想要的是在我发送 POST 之前验证表单,如果某些验证失败然后取消,我相信这是通过 ev.preventDefault()?

最佳答案

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

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

您可能也想尝试 submitHandler 选项:http://docs.jquery.com/Plugins/Validation/validate#options

关于javascript - jQuery preventDefault 在 POST 之前进行验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7379409/

相关文章:

javascript - 如何在 Visual Studio Code 扩展开发中为命令 "explorer.newFile"提供参数

Javascript 动态变量名称不起作用

javascript - Resig的JS继承脚本...父类的属性被覆盖

jquery ajax 结果 div 向下滑动

javascript - 这是一个无限循环,但我终究无法弄清楚为什么

django - 如何在 Django 表单中选择文件夹?

javascript - 将 javascript 变量传递给 Rails Controller

javascript - Div + JQuery 不清除

python - Django Forms cleaned_data 缺少某些字段

java - 文件上传时获取从一个JSP到另一个JSP的标签值