在询问用户是否要离开之前检查 ASP 页是否脏

Checking if an ASP page is dirty before asking user if they want to leave

本文关键字:是否 检查 ASP 离开 用户      更新时间:2023-09-26

我有一个 ASP.NET 表单,它有一堆用户输入、文本框、复选框等。我需要能够检查用户是否在没有保存的情况下对表单进行了编辑,如果是这样提示,则在卸载之前。

我有一个脏标志,一旦用户编辑其中一个文本框就会设置。如果他们将数据保存在表单上,那么我会重置标志。因此,只有在用户编辑但尚未保存时,才应设置该标志。

然后,我使用此标志决定是否提示用户"您确定要离开此页面吗?

代码片段:

var _isDirty = false;
    $(function () {
        try {
                $("#MainContent_txtSometextBox").change(function () {
                    _isDirty = true;
                });
            } catch (e) { }
        });

问题是我不想在每个控件上都设置它。是否可以在页面级别设置它?我认为这不会那么容易,因为我们在页面上也有自定义用户控件。

你可以传递一个不同的选择器

$("input, select, textarea").change(function () {
    _isDirty = true;
});

您可以根据需要扩展此设置。

如果需要限制它,请将其包裹在div中,然后find

$("#myForm").find("input, select, textarea").change(function () {
    _isDirty = true;
});

您可以使用 jquery 的输入选择器来定位所有输入、文本区域、选择和按钮元素。对于按钮,您需要单击事件,对于文本框和区域,脏标志在失去焦点时触发。

演示

$('#body :input'​​​​​​​​).change(function () {
    _isDirty = true;
});