我想要实现的目标是什么?
我有一个由JS控制的div,当单击一个菜单项时,它的高度会发生变化。因此,当单击菜单项时会出现div,当再次单击它时它会消失。
在这个div中我有一个表单,当提交表单时,将显示一条消息,询问用户是否确定要提交表单。如果他们回答是,表单提交并发送电子邮件。
如果用户拒绝,则消息将消失,允许用户进行更改。
问题
提交表单后,页面会因帖子而刷新。从而使div消失。
我的解决方案?
当用户说“是”时,使用jQuery.post()和e.preventDefault()发布表单。
这应该
代码
$('#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
}
});
}
});
});
发生了什么事?
当用户对邮件说“是”时,表单仍在发布,导致刷新。
答案 0 :(得分:2)
我认为您可以在return false;
调用之后放置$.post
(而不是e.preventDefault()
之后(这是为了让bootbox等待发布结果)和return false;
只是bootbox.confirm
在{{1}}子句之后(对于不提交的表单)。
你可以调用你的成功方法bootbox.hideAll来发布后关闭bootbox。
答案 1 :(得分:0)
请在return false;
e.preventDefault();
e.preventDefault();
return false;