jQuery stop or start form from posting [duplicate]

1aaf6o9v  于 2023-10-17  发布在  jQuery
关注(0)|答案(1)|浏览(85)

此问题已在此处有答案

"Submit is not a function" error in JavaScript(19回答)
3天前关闭。
我这里有这个表格:

<form method="post" name="homeForm" id="homeForm" action="thank-you-page.php">

下面是我的jQuery代码:

$("#homeForm").on("submit", function(e){

    var formData = new FormData(this);
                $.ajax({url: "email-check.php", dataType: "json", data: formData, type: "POST", cache: false, contentType: false, processData: false, success: function(result){
    
                    if(result.length > 0)
                    {
                        e.preventDefault();
                        $('.modal').modal('show'); 
                        return false;
                    }
                    {
                        return true;
                    }
    
                }});
        
        

});

我想做的是onSubmit通过api调用对API进行检查,如果结果大于0,则阻止默认值并显示模态,如果结果长度等于0,则将帖子数据带入感谢页面。我面临的问题是,我总是被重定向到感谢页面,而preventDefault没有及时停止表单。如果我把preventDefault放在aExclusive调用之外,我会看到我的modal,但是如果结果是0,我不会后藤到thank you页面。
更新
我试过这个:

var formData = new FormData(this);
            e.preventDefault();
            $.ajax({url: "email-check.php", dataType: "json", data: formData, type: "POST", cache: false, contentType: false, processData: false, success: function(result){

                if(result.length > 0)
                {
                    $('.modal').modal('show'); 
                }
                {
                    e.target.submit();
                }

            }});

我得到错误Uncaught TypeError: e.submit is not a function

ttygqcqt

ttygqcqt1#

您需要在提交处理程序中设置preventDefault,然后Ajax才决定提交实际表单

$("#homeForm").on("submit", function(e) {
  e.preventDefault(); // stop submission
  const form = this; // save the form
  var formData = new FormData(this);
  $.ajax({
    url: "email-check.php",
    dataType: "json",
    data: formData,
    type: "POST",
    cache: false,
    success: function(result) {
      if (result.length > 0) $('.modal').modal('show');
      else form.submit(); // submit the form using the native form element
    }
  });
});

相关问题