可能重复:
使用JavaScript检测未保存的更改
我的Web应用程序有3个Web表单,我在我的网页中实现了验证.我想在我的web应用程序中实现isdirty功能.我想在用户点击注销时弹出我的网页中的消息框(这是一个loginstatus如果表格有任何变化.
环境:Asp.net VS2008 c#
这可以通过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>
Run Code Online (Sandbox Code Playgroud)
其他一些技术(如重复问题中提出的那个被投票结束你的问题)涉及订阅.change()输入元素的事件,但它们不太可靠,因为用户可以abc输入一些输入字段然后删除如果你使用这种技术,表格将被视为脏,虽然没有实际改变的价值.
| 归档时间: |
|
| 查看次数: |
5332 次 |
| 最近记录: |