2013-02-20 79 views
0

我如何防止頁面被點擊頁面上的鏈接時,沒有導航之遙。我的代碼波紋管,但它不是顯示消息的兩倍。該頁面還包含一個數據網格。當我瀏覽通過點擊網格中的記錄遠離頁面顯示彈出式窗口的消息只有兩次。其他任何地方都很好。MVC3防止導航從

var canShowWarning = "@(Model.CanEdit)"; 
var showWarning = false; 

window.onbeforeunload = function() { 
    if (canShowWarning && showWarning) { 
     return 'You have made unsaved changes'; 
    } 
} 
$(function() { 
$("#Form").submit(function() { 
     showWarning = false; 
    }); 

    $("#Form").change(function() { 
     showWarning = true; 
    }); 
}); 
+0

所以,當你提交表單你不應該導航到任何其他網頁?我對嗎 ?。 – 2013-02-20 13:13:04

+0

不是真的。我試圖阻止頁面中的任何導航。當我使用網格中的鏈接導航時,彈出窗口會顯示兩次,但當我使用頁面中的其他鏈接導航時,會顯示一次。 – CodeNoob 2013-02-20 13:45:13

回答

0
var canShowWarning = "@(Model.CanEdit)"; 
var showWarning = false; 
var alreadyShown = false; 

window.onbeforeunload = function() { 
    if (canShowWarning && showWarning && !alreadyShown) { 
     alreadyShown = true; 
     return 'You have made unsaved changes'; 
    } 
} 
$(function() { 
$("#Form").submit(function() { 
     showWarning = false; 
    }); 

    $("#Form").change(function() { 
     showWarning = true; 
     alreadyShown = false; 
    }); 
}); 
+0

如果我通過單擊數據網格記錄離開,消息仍會顯示兩次。網格記錄是鏈接 – CodeNoob 2013-02-20 13:43:08