フォームに変更があったかを判定

| コメント(0)

function isChanged() {

var flg = false;
var arr = document.forms[0].elements;
for(i = 0; i < arr.length; i ++ ) {
var elem = arr[i];
if(elem.type == "text" || elem.type == "textarea") {
if(elem.value != elem.defaultValue) {
flg = true;
break;
}
} else if(elem.type == "checkbox" || elem.type == "radio") {
if(elem.checked != elem.defaultChecked) {
flg = true;
break;
}
} else if(elem.type == "select-one") {
var children = elem.childNodes;
var defaultSelectedFlg = false;
// デフォルト選択状態のものがあるか確認する
for(j = 0; j < children.length; j++ ) {
if(children[j].tagName == 'OPTION') {
if(children[j].defaultSelected) {
defaultSelectedFlg = true;
break;
}
}
}

// デフォルト選択状態のものがあった場合は、それと比較
if(defaultSelectedFlg) {
for(j = 0 ; j < children.length; j++ ) {
if(children[j].tagName == 'OPTION') {
if(children[j].selected != children[j].defaultSelected) {
f = true;
break;
}
}
}
} else {
//デフォルト選択状態以外のものがあった場合は
if(elem.selectedIndex > 0) {
flg = true;
break;
}
}
}
}
return flg;
}

コメントする