【发布时间】:2014-02-04 19:00:42
【问题描述】:
我想要达到什么目的?
我有一个由 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
}
});
}
});
});
发生了什么?
当用户对消息说“是”时,表单仍在发布导致刷新。
【问题讨论】:
-
return falsee.preventDefault()之后你试过了吗; -
是的,它只是阻止引导箱消息在选择答案时消失。
-
对造成的误解表示歉意,它没有用。如果我在两个 e.prevents 之后都返回 false ,它将完全停止警报的工作。如果我在第二个 e.prevent 之后放置一个,它会阻止警报在单击“是”后消失。
-
否,您需要在提交函数结束时返回 false 以防止点击通过。即在最后的
});之前 -
@BobVale 按照您的建议行事似乎无法解决我的问题。似乎添加了 return false;没有效果。我在想也许 div 消失是使用 bootbox 的副作用。
标签: javascript jquery html forms bootbox