我正在使用beforeonload
函数,但我希望当用户提交表单时beforeunload
不应该工作。这是我的代码,它在Chrome中运行良好,但在Firefox中则不行。
window.form_submitted = '';
jQuery(document).ready(function() {
jQuery(window).on('beforeunload', function() {
if (form_submitted == '') {
return "Are you sure to leave that page";
}
});
});
jQuery('#form').on('submit', function (e) {
e.preventDefault();
jQuery(window).off('beforeunload');
form_submitted = 1;
site_redirect(resp.payment_url);
}
return false;
});
您有几个语法问题,并且必须将submit
块放在 DOMReady 处理程序中,否则 JS 将尝试将事件绑定到 DOM 中尚不存在的元素。另请注意,您可以在表单提交时取消绑定 beforeunload
事件时删除全局标志变量。试试这个:
jQuery(document).ready(function($) {
$(window).on('beforeunload', function() {
return "Are you sure to leave that page";
});
$('#form').on('submit', function (e) {
e.preventDefault();
$(window).off('beforeunload');
site_redirect(resp.payment_url);
});
});
另请注意,通过在提交表单时执行重定向(假设这是site_redirect
函数正在执行的操作),则表单的内容将丢失。