我有一个ASP.NET表单,它有一堆用户输入,文本框,复选框等。我需要能够检查用户是否在表单上进行了编辑而没有保存,如果有提示那么beforeunload。
我有一个脏标志,一旦用户编辑其中一个文本框就会设置。如果他们将数据保存在表单上,那么我重置标志。因此,只有在用户编辑但尚未保存时才应设置该标志。
然后我使用此标志来决定是否提示用户“您确定要离开此页吗?”
代码段:
var _isDirty = false;
$(function () {
try {
$("#MainContent_txtSometextBox").change(function () {
_isDirty = true;
});
} catch (e) { }
});
问题是我不想在每个控件上设置它。是否可以在页面级别设置它?我不认为它会那么容易,因为我们在页面上也有自定义用户控件。
答案 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;
});