Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在单击对象之前,是否有方法将window.onbeforeunload设置为null?_Javascript_Html_Jquery - Fatal编程技术网

Javascript 在单击对象之前,是否有方法将window.onbeforeunload设置为null?

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

我正在使用wtforms,这是我的提交按钮:

{{ 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允许继续提交)。