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

时间:2012-06-07 15:38:56

标签: javascript jquery asp.net

我有一个ASP.NET表单,它有一堆用户输入,文本框,复选框等。我需要能够检查用户是否在表单上进行了编辑而没有保存,如果有提示那么beforeunload。

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

然后我使用此标志来决定是否提示用户“您确定要离开此页吗?”

代码段:

var _isDirty = false;

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

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

2 个答案:

答案 0 :(得分:4)

您可以传递不同的选择器

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

您可以根据需要进行扩展。

如果您需要限制它,请将其换成div,然后find

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

答案 1 :(得分:0)

您可以使用jquery的input selector来定位所有输入,textarea,select和button元素。对于按钮,您需要一个单击事件,对于文本框和区域,在失去焦点时会触发脏标记。

<强> Demo

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