我有一个 ASP.NET 页面,其中有几个可编辑的下拉列表,很少有可编辑的文本框,很少只显示字段。
我想跟踪用户是否更改了任何下拉值或文本框值。当用户单击goBack按钮时,我想提示他们一条消息,说明更改未保存,以及他们是否真的要返回。
请让我知道跟踪文本框或下拉列表更改的最简单方法是什么。
谢谢
您可以在页面中添加类似以下内容:
<script type="text/javascript">
var submit = false;
window.onbeforeunload = confirmLeave;
function confirmLeave()
{
if (!submit)
{
return "You have unsaved changes. Are you sure you want to leave the page?";
}
}
</script>
<asp:Button ID="btnSubmit" runat="server" Text="Submit" OnClientClick="javascript:submit=true;"/>
您需要将更改处理程序添加到要跟踪的所有输入中。
我强烈推荐jQuery blur。
每当输入或选择发生焦点丢失时,就会触发模糊。如果要跟踪实际值更改,可以使用jQuery数据保存页面加载的值
<script>
inputChanged = false;
$('input, select').blur(function() {
inputChanged = true;
});
window.onbeforeunload = function()
{
if (inputChanged)
{
return "You have unsaved changes. Discard change?";
}
}
</script>