Javascript 在单击对象之前,是否有方法将window.onbeforeunload设置为null?
我正在使用wtforms,这是我的提交按钮:Javascript 在单击对象之前,是否有方法将window.onbeforeunload设置为null?,javascript,html,jquery,Javascript,Html,Jquery,我正在使用wtforms,这是我的提交按钮: {{ form.submit(class="btn btn-outline-info") }} <a onclick="submit()">{{ form.submit(class="btn btn-outline-info") }}</a> 这是我的onbeforeunload函数: <script type="text/javascript&q
{{ form.submit(class="btn btn-outline-info") }}
<a onclick="submit()">{{ form.submit(class="btn btn-outline-info") }}</a>
这是我的onbeforeunload函数:
<script type="text/javascript">
window.onbeforeunload = function() {
return "Are you sure you want to navigate away?";
}
</script>
<script>
function submit()
{
window.onbeforeunload = null;
}
</script>
window.onbeforeunload=函数(){
return“您确定要离开吗?”;
}
我知道,在普通html表单中,我可能可以使用jquery来实现这一点:
参考:
$('#myform')。提交(函数(事件){
event.preventDefault();//这将阻止默认提交
window.onbeforeunload=null;
$(this).unbind('submit').submit();//继续默认的提交解除绑定
})
当我使用这些wtforms对象时,我应该做什么?(另外,我不熟悉js或jquery…请指出我做错了什么(如果有)
提前谢谢 一个选项是使用
addEventListener
而不是onbeforeunload
const myFunc=function(){
return“您确定要离开吗?”;
}
window.addEventListener('beforeunload',myFunc);
然后在submit
方法中,删除侦听器
window.removeEventListener('beforeunload',myFunc);
所以这可能不是最好的方法!但这确实是一个很好的解决办法!由于wtforms对象不允许将任何附加函数(例如onclick或任何信息)传递到{}花括号中,因此需要对其进行包装!因此,添加所有这些内容的主要目的是调用函数来禁用onbeforeunload,因此可以快速找到解决方案
onbeforeunload函数(保持不变):
window.onbeforeunload=函数(){
return“您确定要离开吗?”;
}
禁用onbeforeunload功能:
<script type="text/javascript">
window.onbeforeunload = function() {
return "Are you sure you want to navigate away?";
}
</script>
<script>
function submit()
{
window.onbeforeunload = null;
}
</script>
函数提交()
{
window.onbeforeunload=null;
}
和提交按钮:
{{ form.submit(class="btn btn-outline-info") }}
<a onclick="submit()">{{ form.submit(class="btn btn-outline-info") }}</a>
{{form.submit(class=“btn btn outline info”)}
真想不到我花了这么长时间才弄明白,顺便说一句,谢谢@terrymorse,他让我明白了这个问题其实是多么简单!感谢所有世卫组织的评论,提供解决方案并编辑我的问题 我怀疑您是否需要调用
preventDefault()
。如果你打算以任何方式提交。我只是将onbeforeunload
设置为null并返回true(返回true允许继续提交)。