1 $().extend('serialize', function () { 2 for (var i = 0; i < this.elements.length; i ++) { 3 var form = this.elements[i]; 4 var parts = {}; 5 for (var i = 0; i < form.elements.length; i ++) { 6 var filed = form.elements[i]; 7 switch (filed.type) { 8 case undefined : 9 case 'submit' : 10 case 'reset' : 11 case 'file' : 12 case 'button' : 13 break; 14 case 'radio' : 15 case 'checkbox' : 16 if (!filed.selected) break; 17 case 'select-one' : 18 case 'select-multiple' : 19 for (var j = 0; j < filed.options.length; j ++) { 20 var option = filed.options[j]; 21 if (option.selected) { 22 var optValue = ''; 23 if (option.hasAttribute) { 24 optValue = (option.hasAttribute('value') ? option.value : option.text); 25 } else { 26 optValue = (option.attributes('value').specified ? option.value : option.text); 27 } 28 parts[filed.name] = optValue; 29 } 30 } 31 break; 32 default : 33 parts[filed.name] = filed.value; 34 } 35 } 36 return parts; 37 } 38 return this; 39 });