$.fn.serializeObject = function () { var obj = {}; var count = 0; $.each(this.serializeArray(), function (i, o) { var n = o.name, v = o.value; count++; obj[n] = obj[n] === undefined ? v : $.isArray(obj[n]) ? obj[n].concat(v) : [obj[n], v]; }); //obj.nameCounts = count + "";//表單name個數 return JSON.stringify(obj); }; 調用示例:var serStr = $('#form1').serializeObject();
上面的插件,不能適用於有多個值的輸入控件,例如複選框、多選的select。下面,我將插件作進一步的修改,讓其支持多選。代碼以下:this
(function($){ $.fn.serializeJson=function(){ var serializeObj={}; var array=this.serializeArray(); var str=this.serialize(); $(array).each(function(){ if(serializeObj[this.name]){ if($.isArray(serializeObj[this.name])){ serializeObj[this.name].push(this.value); }else{ serializeObj[this.name]=[serializeObj[this.name],this.value]; } }else{ serializeObj[this.name]=this.value; } }); return serializeObj; }; })(jQuery);
歡迎你們加入QQ羣: 15129679 討論問題spa
實例下載插件