日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

Jquery將表單轉(zhuǎn)化成Json對象

 java_laq小館 2014-01-22

大家知道Jquery中有serialize方法,可以將表單序列化為一個(gè)“&”連接的字符串,但卻沒有提供序列化為Json的方法。不過,我們可以寫一個(gè)插件實(shí)現(xiàn)。

 

我在網(wǎng)上看到有人用替換的方法,先用serialize序列化后,將&替換成“:”、“‘”:

Js代碼
/**

* 重置form表單
* @param formId form的id
*/
function resetQuery(formId){
var fid = “#” + formId;
var str = $(fid).serialize();
//str= cardSelectDate=3&startdate=2012-02-01&enddate=2012-02-04
var ob= strToObj(str);
alert(ob.startdate);//2012-02-01
}

function strToObj(str){
str = str.replace(/&/g,”‘,’”);
str = str.replace(/=/g,”‘:’”);
str = “({‘”+str +”‘})”;
obj = eval(str);
return obj;
}

個(gè)人感覺這樣做有bug。

 

我的方法是,先用serializeArray序列化為數(shù)組,再封裝為Json對象。

 

 

下面是表單:

Html代碼

<form id=”myForm” action=”#”>
<input name=”name”/>
<input name=”age”/>
<input type=”submit”/>
</form>

Html代碼  收藏代碼
  1. <form id=”myForm” action=”#”>
  2.     <input name=”name”/>
  3.     <input name=”age”/>
  4.     <input type=”submit”/>
  5. </form>

 

Jquery插件代碼如下:

Js代碼

(function($){
$.fn.serializeJson=function(){
var serializeObj={};
$(this.serializeArray()).each(function(){
serializeObj[this.name]=this.value;
});
return serializeObj;
};
})(jQuery);

下面測試一下:$(“#myForm”).bind(“submit”,function(e){

Js代碼e.preventDefault();
console.log($(this).serializeJson());
});

輸入a,b提交,得到序列化結(jié)果

{age: “b”,name: “a”}

 

 

上面的插件,不能適用于有多個(gè)值的輸入控件,例如復(fù)選框、多選的select。下面,我將插件做進(jìn)一步的修改,讓其支持多選。代碼如下:

Js代碼

(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);

這里,我將多選的值封裝為一個(gè)數(shù)值來進(jìn)行處理。如果大家使用的時(shí)候需要將多選的值封裝為“,”連接的字符串或者其他形式,請自行修改相應(yīng)代碼。

 

測試如下:

表單:

 

Html代碼<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>

測試結(jié)果:

{age: “aa”,interest: ["interest2", "interest4"],name: “dd”,vehicle:["Bike","Car"]}


來自:http://www./jquery-form-to-json/

    本站是提供個(gè)人知識管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多