[英]e.preventDefault() not working in javascript, but working in jQuery
[英]e.preventDefault() not working when used with bootbox and jQuery.post()
我正在努力实现什么?
我有一个由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
}
});
}
});
});
怎么了?
当用户对消息说“是”时,表单仍在发布,导致刷新。
我认为您可以将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.