页面退出确认

时间:2014-07-15 17:40:20

标签: javascript ruby-on-rails turbolinks

我的rails应用程序遇到了一些问题。当用户输入数据然后尝试通过任何方式离开页面(提交除外),我希望它提示他们确认离开页面。这是我到目前为止的代码,它在一定程度上起作用。如果用户填写了一些数据,然后点击“提交”,系统仍会提示他们确认离开该页面。如果他们选择留在页面上,然后再次点击“提交”,它将按预期工作。

var clean;
var submitted = false;

$(function(){
  clean = $("form").serialize();
});

window.onbeforeunload = function(){
  $("form").submit(function() {
    submitted = true;
  });
  var dirty = $("form").serialize();
  if (dirty != clean && !submitted) {
    return "You have unsaved data that will be lost if you leave the page.";
  }
};

当用户尝试关注页面上的某个链接(不仅仅是关闭它等)时,我也希望出现提示。我正在使用jquery-turbolinks,但它似乎仍然没有选择那些事件。

任何有关这些问题的帮助都将不胜感激!

1 个答案:

答案 0 :(得分:0)

这是一个可能的解决方案:

<script type="text/javascript">
$(document).ready(function() {  

  var isEdit  = false;  

  $('input').change(function() {  
    isEdit = true;  
  });  

  function checkIsEdit() {  
    if(isEdit)  
      return "You have modified some content. Please save this form.";  
  }  

  window.onbeforeunload = checkIsEdit;  
  $(document).submit(function(){
    isEdit = false;
  });
});  
</script>

(基于http://www.webstuffshare.com/2010/03/code-snippet-jquery-confirm-before-exit/