乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

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

       java_laq小館 2014-01-22

      大家知道Jquery中有serialize方法,可以將表單序列化為一個“&”連接的字符串,但卻沒有提供序列化為Json的方法。不過,我們可以寫一個插件實(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;
      }

      個人感覺這樣做有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”}

       

       

      上面的插件,不能適用于有多個值的輸入控件,例如復(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);

      這里,我將多選的值封裝為一個數(shù)值來進(jìn)行處理。如果大家使用的時候需要將多選的值封裝為“,”連接的字符串或者其他形式,請自行修改相應(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/

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

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多