Jquery 將表單序列化為Json對象
先用serializeArray序列化為數組,再封裝為Json對象。
下面是表單:
<form id="myForm" action="#">
<input name="name"/>
<input name="age"/>
<input type="submit"/>
</form>
Jquery插件代碼如下:
(function($){ $.fn.serializeJson=function(){ var serializeObj={}; $(this.serializeArray()).each(function(){ serializeObj[this.name]=this.value; }); return serializeObj; }; })(jQuery);
下面測試一下:
$("#myForm").bind("submit",function(e){ e.preventDefault(); console.log($(this).serializeJson()); });
測試結果:
輸入a,b提交,得到序列化結果
{age: "b",name: "a"}
上面的插件,不能適用于有多個值的輸入控件,例如復選框、多選的select。下面,我將插件做進一步的修改,讓其支持多選。代碼如下:
(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);
這里,我將多選的值封裝為一個數值來進行處理。如果大家使用的時候需要將多選的值封裝為“,"連接的字符串或者其他形式,請自行修改相應代碼。
測試如下:
表單:
<form id="myForm" action="#"> <input name="name"/> <input name="age"/> <select multiple="multiple" name="interest" size="2"> <option value ="interest1">interest1</option> <option value ="interest2">interest2</option> <option value="interest3">interest3</option> <option value="interest4">interest4</option> </select> <input type="checkbox" name="vehicle" value="Bike" /> I have a bike <input type="checkbox" name="vehicle" value="Car" /> I have a car <input type="submit"/> </form>
測試結果:
{age: "aa",interest: ["interest2", "interest4"],name: "dd",vehicle:["Bike","Car"]}
本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!