可能重复:
Detecting Unsaved Changes using JavaScript
我的Web应用程序有3种web表单,我在我的网页中实现了验证,我想在我的web应用程序中实现is脏功能,当用户单击“退出”(这是一个登录状态控制)时,我想在我的网页中弹出一个消息框(这是一个登录状态控制),如果表单有任何更改的话。
环境: Asp.net VS2008 c#
发布于 2011-05-09 19:07:29
当用户试图离开窗体/页时,您可以轻松地设置弹出/模式窗口以显示。下面是一个快速的纯javascript示例,当您试图离开页面时,它会显示一条消息。
<body onunload="if (confirm('Save form ?')) { SaveFormMethod(); }">如果你需要一个更好的例子,你应该提供更多的细节,并向我们展示你的代码。
发布于 2011-05-09 19:10:06
使用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,然后删除它,如果使用此技术,则表单将被认为是脏的,尽管实际上没有值更改。
发布于 2011-05-09 19:26:19
请看一下this answer,看看它是否有帮助
https://stackoverflow.com/questions/5941232
复制相似问题