之前写了一个表单序列化的方法,现在看来,还是有很多东西没考虑到,现在新写了一个,留做参考:
functionserialize **(**form ){
var parts =new Array();
var field =null ;
for(var i =0,len =form.elements.length ;i <len ;i ++){
field =form.elements[i];
switch(field.type){
case"select-one":
case"select-multiple":
for(var j =0,optLen =field.options.length ;j <optLen ;j ++){
var option =field.options[j];
if(option.selected){
var optValue ="";
if(option.hasAttribute){
optValue =option.hasAttribute("value")?option.value:option.text ;
}else{
optValue =option.attributes["value"].specified ?option.value:option.text ;
}
parts.push(encodeURIComponent(field.name)+"="+encodeURIComponent(optValue));
}
}
break;
caseundefined :
case"file":
case"submit":
case"reset":
case"button":
break;
case"radio":
case"checkbox":
if(!field.checked){
break;
}
default:
parts.push(encodeURIComponent(field.name)+"="+encodeURIComponent(field.value));
}
}
return parts.join("&");
}
Comments(0)