繁体   English   中英

e.preventDefault()与引导箱和jQuery.post()结合使用时不起作用

[英]e.preventDefault() not working when used with bootbox and jQuery.post()

我正在努力实现什么?

我有一个由JS控制的div,当单击一个菜单项时,它的高度已更改。 因此,当单击菜单项时,将显示一个div,当再次单击它时,它就会消失。

在此div中,我有一个表单,当提交表单时,将显示一条消息,询问用户是否确定要提交表单。 如果他们回答“是”,则提交表单并发送电子邮件。

如果用户说不,该消息将消失,允许用户进行更改。

问题

提交表单后,页面会因帖子而刷新。 因此使div消失。

我的解决方案?

当用户说是时,将使用jQuery.post()和e.preventDefault()来发布表单。

然后应该

  1. 停止刷新表格(因此,带有表格的div仍处于打开状态)
  2. 过帐表格数据

     $('#form1').submit(function(e) {
            var currentForm = this;
            e.preventDefault();
             console.log("prevent default1");//Debug Line
            bootbox.confirm("Are you sure?", function(result) {
                if (result) {
                    e.preventDefault();
                    console.log("prevent default2");//Debug Line
                      $.ajax({
               type: 'POST',
               url: 'indextest2.php',
               data: $("#form1").serialize(),
               error: function () {
                   console.log('Ajax Error');//Debug Line
               }, 
               success: function (response) {
                    console.log('Ajax Success'); //Debug Line
                        }
                    });
                }
            }); 
        }); 

怎么了?

当用户对消息说“是”时,表单仍在发布,导致刷新。

我认为您可以将return false; 就在$.post调用之后(而不是在e.preventDefault() (这是用于让bootbox等待发布结果)和return false;仅在bootbox.confirm子句之后(用于不提交表单)。调用成功方法bootbox.hideAll以在发布后关闭bootbox。

请把return false; e.preventDefault();

e.preventDefault();
return false;

暂无
暂无

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

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