本文轉(zhuǎn)自:http://info.codepub.com/2008/09/info-22582.html
原文如下:
使用場合:當(dāng)某個頁面數(shù)據(jù)修改時,需要執(zhí)行某些操作時
在頁面的body加載事件(onload)中加上initFileds()就可以記錄頁面的初始數(shù)據(jù)
在需要判斷頁面數(shù)據(jù)是否改變時調(diào)用checkModification()方法就可判斷數(shù)據(jù)是否改變
返回值為true就是已經(jīng)改變
返回值為false就是沒有改變
// 頁面編輯數(shù)據(jù)
var inputsData;
var textareasData;
var selectsData;
// 記錄下表單中的原始值
function initFileds() {
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;
}
}
/*
* 判斷表單中值是否被修改了
* submitCommand 表單有改動時,執(zhí)行的javascript代碼
*/
function checkModification(submitCommand) {
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++) {
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&&confirm("數(shù)據(jù)已經(jīng)改變,是否保存?")) {
eval(submitCommand);
}
}