Javascript e、 preventDefault()与bootbox和jQuery.post()一起使用时不起作用

Javascript e、 preventDefault()与bootbox和jQuery.post()一起使用时不起作用,javascript,jquery,html,forms,bootbox,Javascript,Jquery,Html,Forms,Bootbox,我想要达到的目标是什么? 我有一个由JS控制的div,当单击菜单项时,它的高度会改变。因此,当单击菜单项时,会出现一个div,当再次单击时,它会消失 在这个div中,我有一个表单,当表单提交时,将显示一条消息,询问用户是否确定要提交表单。如果他们回答是,则提交表格并发送电子邮件 如果用户说否,消息将消失,允许用户进行更改 问题 提交表单时,页面因帖子而刷新。从而使div消失 我的解决方案? 当用户说是时,将使用jQuery.post()和e.preventDefault()发布表单 这应该是 停

我想要达到的目标是什么?

我有一个由JS控制的div,当单击菜单项时,它的高度会改变。因此,当单击菜单项时,会出现一个div,当再次单击时,它会消失

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

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

问题

提交表单时,页面因帖子而刷新。从而使div消失

我的解决方案?

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

这应该是

  • 停止刷新表单(因此带有表单的div仍处于打开状态)
  • 发布表单数据
  • 代码

         $('#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
                            }
                        });
                    }
                }); 
            }); 
    
    发生了什么事?


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

    请输入
    返回false
    e.preventDefault()之后


    我想你可以把
    返回false
    就在
    $.post
    调用之后(而不是在
    e.preventDefault()
    (这是引导框等待post结果)和
    返回false;
    就在
    引导框之后。确认
    子句(对于不提交的表单)。
    您可以调用success方法a bootbox.hideAll在post后关闭bootbox。

    您是否在
    e.preventDefault()之后通过
    return false
    尝试过它
    ;是,它只是在选择答案时阻止引导框消息消失。对于误解表示歉意,它不起作用。如果我在两个e之后都输入return false,它将阻止警报工作。如果我在第二个e之后输入return,它将阻止警报在“Yes”之后消失已单击。否您需要在提交函数结束时返回false,以防止单击通过。即,就在最后的
    }之前)@BobVale按照你的建议做似乎不能解决我的问题。这似乎是错误的;没有效果。我在想,也许div消失是使用bootbox的副作用。它不起作用,只会引起其他不必要的副作用。
    
    e.preventDefault();
    return false;