最近要写一段javascript,来判断页面中的表单是否被修改过。
经过上网查资料,可以发现,判断input是否被修改了值,可以用下面的方法来判断:
var form1 = document.forms["form1"];
var modified = false;
var field = form1.salerName;
if(field.value!=field.defaultValue){
modified = true;
}
然而,这段代码只对文本输入类型的有效(包括file类型),对于radio和checkbox类型的就没办法检测了。
又上网搜了半天,没有任何解决办法,难道就不能解决了吗?
终于功夫不负有心人,在经过一番摸索后终于发现了解决办法!
var form1 = document.forms["form1"];
var modified = false;
var fields = form1.country;
//注意fields是一个数组,无论是checkbox还是radio都是这样
for(var i=0; i
if(fields[i].checked!=fields[i].defaultChecked){
modified = true;
break;
}
}
原来对于radio和checkbox类型的input,需要判断其checked与defaultChecked是否一样!
faint!
补充:
对于textarea,用defaultValue即可判断是否被修改了;
而对于select,则又是一种情形,因此再次修订如下:
var form1 = document.forms["form1"];
var modified = false;
var select = form1.cates;
var options = select.options;
for(var i=0; i
if(options[i].defaultSelected&&select.selectedIndex==i){
modified = true;
break;
}
}
原来对于select来说,是否被修改了要判断其selectedIndex是否在原先的位置上,而原先的位置只能一个一个的数点其option项!
更晕!