无法将成功标志添加到onbeforeunload

时间:2010-06-16 17:03:47

标签: javascript onbeforeunload

有onbeforeunload的问题。我有一个长形式通过jquery向导插件分成几段。我需要弹出一个确认对话框,如果你回击,刷新,关闭等任何一步,但需要它不点击提交按钮弹出确认对话框。让它工作,或者至少我想,现在不行。

<script type="text/javascript">
var okToSubmit = false;
window.onbeforeunload = function() {
document.getElementById('Register').onclick = function() { okToSubmit = true; };
if(!okToSubmit) return "Using the browsers back button will cause you to lose all     form data. Please use the Next and Back buttons on the form"; 
};
</script>

'注册'是提交按钮ID。请帮忙!

2 个答案:

答案 0 :(得分:0)

问题是onclick事件处理程序不会在if(!okToSubmit)之前调用。当你说:

时你所做的一切
document.getElementById('Register').onclick = function() { okToSubmit = true; };

只是设置事件处理程序。您实际上并没有检索okToSubmit的值。

解决此问题的一种方法可能是在注册onclick之前设置onbeforeunload事件处理程序。

答案 1 :(得分:0)

普通的旧JS语法有点生疏,所以这里是jQuery,如果有人需要它,这是有效的,至少对于表单提交按钮。改变方法以获得是否符合您的需求

<script type="text/javascript">
$(document).ready(function(){
  var action_is_post = false;
  $("form").submit(function () {
    action_is_post = true;
  });

  window.onbeforeunload = confirmExit;
  function confirmExit()
  {
    if (!action_is_post)
      return 'Using the browsers back, refresh or close button will cause you to lose all form data. Please use the Next and Back buttons on the form.';
  }
});

</script>