您的位置:首页 > 其它

自动识别页面上的所有控件是否被改变过

2015-06-19 13:41 295 查看
在页面开发的新增或者修改的时候,有时候给页面上的所有控件赋值完之后,点击保存,此页面不关闭,那么问题来了,如果页面上所有的值都不改变,这时候如果继续进行保存操作,着实有些不妥,那么就需要判断页面上的所有控件是否被改变过,接下来方法如下:

1、js如下:

var inputsData;

var textareasData;

var selectsData;

$(function () {

inputLoad();

});

function inputLoad() {

var inputs = document.getElementsByTagName("input");

var textareas = document.getElementsByTagName("textarea");

var selects = document.getElementsByTagName("select");

inputsData = new Array(inputs.length);

for (var i = 0; i < inputs.length; i++) {

inputsData[i] = inputs[i].value;

if (inputs[i].type == "radio") {

inputsData[i] = inputs[i].checked;

}

}

textareasData = new Array(textareas.length);

for (var i = 0; i < textareas.length; i++) {

textareasData[i] = textareas[i].value;

}

selectsData = new Array(selects.length);

for (var i = 0; i < selects.length; i++) {

selectsData[i] = selects[i].value;

}

}

//验证页面是否通过,返回 true = 通过,false = 不通过

//IsAlert = (0 = 不提示,1 = alert提示,2 = confirm提示)

//errorMessage = ('0' = 不提示 ,其他为验证不通过时提示文字)

//SumbitID =('0' = 提示完成后不做提交操作,非空则为页面某按钮ID,做click操作)

//isCheckButton = (是否对比button按钮, true = 对比, false = 不对比)

function checkPage(isAlert, errorMessage, SumbitID, isCheckButton) {

// alert("我是子页面");

var ReturnBool = false;

var inputs = document.getElementsByTagName("input");

var textareas = document.getElementsByTagName("textarea");

var selects = document.getElementsByTagName("select");

var hasBeenChanged = false;

for (var i = 0; i < inputs.length; i++) {

var istrue = true;

if (!isCheckButton && inputs[i].type == "submit") {

istrue = false;

}

if (istrue) {

if (inputs[i].type == "radio" && (inputs[i].checked != inputsData[i])) {

hasBeenChanged = true;

inputsData[i] = inputs[i].checked;

}

if (inputs[i].type != "radio" && inputsData[i] != inputs[i].value) {

if (inputs[i].name != "actionType") {

hasBeenChanged = true;

}

inputsData[i] = inputs[i].value;

}

}

}

for (var i = 0; i < textareas.length; i++) {

if (textareasData[i] != textareas[i].value) {

hasBeenChanged = true;

textareasData[i] = textareas[i].value;

}

}

for (var i = 0; i < selects.length; i++) {

if (selectsData[i] != selects[i].value) {

hasBeenChanged = true;

selectsData[i] = selects[i].value;

}

}

if (hasBeenChanged) {

var rbool = false;

if (isAlert == 0) {

rbool = true;

} else if (isAlert == 1) {

alert(errorMessage)

}

if (isAlert == 2) {

if (confirm(errorMessage)) {

rbool = true;

}

}

if (rbool == true) {

if (SumbitID != 0) {

$("#" + SumbitID).click();

}

}

ReturnBool = true;

}

return ReturnBool;

}

2、页面上引用该JS

<asp:Button class="res" ID="btnSave" runat="server" Text="保存" OnClientClick="return checkPage(0,'',0,true);" onclick="btnSave_Click" />

该js中引用的参数视情况而定,其作用在js中有所详述。

3、保存完之后,引用js中的inputLoad()方法

Page.ClientScript.RegisterStartupScript(this.GetType(), "", "<script>alert('数据添加成功');inputLoad();</script>");

ok了,就是该js总没有判断<input type='file'>的内容,所以,该方法还有待改进。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: