2014-07-15 94 views
1

我遇到了幾個問題,我的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,但它似乎仍然沒有選擇這些事件。

任何這些問題的幫助將不勝感激!

回答

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/