【问题标题】:e.preventDefault() not working when used with bootbox and jQuery.post()e.preventDefault() 与 bootbox 和 jQuery.post() 一起使用时不起作用
【发布时间】:2014-02-04 19:00:42
【问题描述】:

我想要达到什么目的?

我有一个由 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 falsee.preventDefault()之后你试过了吗;
  • 是的,它只是阻止引导箱消息在选择答案时消失。
  • 对造成的误解表示歉意,它没有用。如果我在两个 e.prevents 之后都返回 false ,它将完全停止警报的工作。如果我在第二个 e.prevent 之后放置一个,它会阻止警报在单击“是”后消失。
  • 否,您需要在提交函数结束时返回 false 以防止点击通过。即在最后的});之前
  • @BobVale 按照您的建议行事似乎无法解决我的问题。似乎添加了 return false;没有效果。我在想也许 div 消失是使用 bootbox 的副作用。

标签: javascript jquery html forms bootbox


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    请把return false;放在e.preventDefault();之后

    e.preventDefault();
    return false;
    

    【讨论】:

    • 没用,只会引起其他不想要的副作用。
    猜你喜欢
    • 2013-02-05
    • 1970-01-01
    • 2021-11-29
    • 1970-01-01
    • 2019-10-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-07
    相关资源
    最近更新 更多