2010-06-16 60 views
0

遇到onbeforeunload问题。我有一个通过jquery向导插入分段的长表单。如果您在任何步骤中回击,刷新,关闭等,我需要弹出一个确认对话框,但需要它不要点击提交按钮时弹出确认对话框。让它工作,或者至少我认为,现在不行。添加成功标志给onbeforeunload问题

<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。请帮忙!

回答

0

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

document.getElementById('Register').onclick = function() { okToSubmit = true; }; 

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

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

+0

如何,只要动起来的线路,使得整个事情没有工作... – 2010-06-16 17:29:10

+0

你需要等待DOM调用此代码的任何之前加载。你可以使用'document.onload'来达到这个目的。 – 2010-06-16 17:38:37

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>