我的Web應用程序有3種網頁形式,我實現了我的webpage.I的驗證要實現isdirty功能。我想在用戶點擊登出(這是一個登錄狀態控件)時,如果窗體有任何更改,我的網頁上會彈出一個消息框。
環境: Asp.net VS2008 C#
我的Web應用程序有3種網頁形式,我實現了我的webpage.I的驗證要實現isdirty功能。我想在用戶點擊登出(這是一個登錄狀態控件)時,如果窗體有任何更改,我的網頁上會彈出一個消息框。
環境: Asp.net VS2008 C#
您可以輕鬆地設置彈出/模態窗口,當用戶試圖離開一個窗體/頁顯示向上。這裏有一個快速的純JavaScript示例,當您嘗試離開頁面時會顯示一條消息。
<body onunload="if (confirm('Save form ?')) { SaveFormMethod(); }">
如果您需要更好的示例,您應該提供更多詳細信息並向我們顯示您的代碼。
這可以很容易地用jQuery和onbeforeunload
事件完成。使用.serialize()
函數,您可以在頁面加載時計算返回字符串上表單的狀態,然後在onbeforeunload
事件中計算表單的狀態。然後比較兩個值,如果它們不同,那麼表單中確實發生了變化。
例子:
<%@ Page Language="C#" %>
<!DOCTYPE html>
<html>
<head id="Head1" runat="server">
<title></title>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.6/jquery.min.js"></script>
<script type="text/javascript">
var data = '';
$(function() {
data = $('form').serialize();
});
window.onbeforeunload = function() {
if ($('form').serialize() !== data) {
return 'You have unsaved changes. Are you sure you want to navigate away?';
}
};
</script>
</head>
<body>
<form id="Form1" runat="server">
<asp:TextBox ID="FirstName" runat="server" />
<asp:TextBox ID="LastName" runat="server" TextMode="MultiLine" />
<asp:CheckBox ID="Chk" runat="server" />
<asp:HyperLink ID="Link" runat="server" Text="Go to Google" NavigateUrl="http://www.google.com" />
</form>
</body>
</html>
一些其他技術(如在被投票決定關閉您的問題重複問題提出的)涉及認購的.change()
事件輸入元素,但它們不太可靠因爲用戶可以在某些輸入字段中輸入abc
,然後將其刪除,如果使用此技術,表單將被視爲髒,儘管沒有實際值發生更改。
請看看this answer,看看它是否有幫助
非常好,快速的實施。我不確定返回消息「您有未保存的更改」的用法是什麼。你確定要離開嗎?'因爲alerty信箱裏的信息總是'你想離開這個網站嗎?您所做的更改可能無法保存'....任何方式來更改此消息? – 2018-01-05 14:54:00
明白了..消息無法更改..它由瀏覽器控制(在window.onbeforeunload文檔中提到)....感謝這篇文章 – 2018-01-05 15:22:32