張慧的博客

          張慧的博客

            BlogJava :: 首頁 :: 聯系 :: 聚合  :: 管理
            45 Posts :: 0 Stories :: 24 Comments :: 0 Trackbacks
          ;(function($){
          /**
           * 依賴jquery-1.4.2
           * 依賴jquery.json-2.2,參考http://code.google.com/p/jquery-json/
           * 用于將form序列化成json串,并且可以反序列化添充回來
           * 作者:段旭光 2010-08-08
           */
          $.fn.serializeObjectToJson = function()
          {
              /**
               * 此方法代碼參考:http://css-tricks.com/snippets/jquery/serialize-form-to-json/
               */
             var o = {};
             var a = this.serializeArray();
             $.each(a, function() {
                 if (o[this.name]) {
                     if (!o[this.name].push) {
                         o[this.name] = [o[this.name]];
                     }
                     o[this.name].push(this.value || '');
                 } else {
                     o[this.name] = this.value || '';
                 }
             });
             return o;
            // return $.toJSON(o);
          };
          /**
           * 按json格式添充現有form,基中json的key對應form內的元素name
           * 支持input、radio、select、textarea單值或多值
           * 參數json為json對象
           */
          $.fn.unSerializeObjectFromJson = function(json)
          {
              if(!json) return;
              var values=eval('('+json+')');
              var form=this;
              /**
               * 得到現有form表單的內容,如果表單有默認值則全部清空,主要針對單值表單項,如:checkbox、radio,因為這些項如果不選中會不被序列化記錄暫存,所以
               * 在反序列化時,無法處理可能存在默認值的這些表單項,所以這里做一下特殊處理
               */
              var defaultFormJsonValues=form.serializeObjectToJson();
              $.each(defaultFormJsonValues, function(key, value){
                  var object=form.find("*[name='"+key+"']");
                  if(object.length==1){
                      if(object.attr("type").toLowerCase()=='radio' || object.attr("type").toLowerCase()=='checkbox'){
                          object.attr("checked",false);
                      }
                  }
              });
              //加載需要添充的表單內容
              $.each(values, function(key,value){
                  var object=form.find("*[name='"+key+"']");//得到form內指定name的控件
                  if(object.length==1){
                      if(object.attr("type").toLowerCase()=='radio' || object.attr("type").toLowerCase()=='checkbox'){
                          if(object.val()==value){
                              object.attr("checked",true);
                          }
                          return true;
                      }else{
                          object.val(value);
                      }
                  }else if(object.length>1){
                      object.each(function(i){
                          if(object.attr("type").toLowerCase()=='radio' || object.attr("type").toLowerCase()=='checkbox'){
                              if($.inArray($(this).val(),value)!=-1){
                                  $(this).attr("checked",true);
                              }else{
                                  $(this).attr("checked",false);
                              }
                          }else{
                              $(this).val(value[i]);
                          }
                      });
                  }
              });

          };
          /**
           * 得到當前年的第一天
           */
          $.getCurrentYearFirstDay=function(format){
              var date=new Date();
              var fDate=new Date(date.getFullYear(),0,1,0,0,0,0);
              return $.getFormateDate(format,fDate);
          };
          /**
           * 得到當前年的最后一天
           */
          $.getCurrentYearLastDay=function(format){
              var date=new Date();
              var fDate=new Date(date.getFullYear(),11,31,23,59,59,999);
              return $.getFormateDate(format,fDate);
          };
          /**
           * 得到當前月的第一天
           */
          $.getCurrentMonthFirstDay=function(format){
              var date=new Date();
              var fDate=new Date(date.getFullYear(),date.getMonth(),1,0,0,0,0);
              return $.getFormateDate(format,fDate);
          };
          /**
           * 得到當前月的最后一天
           */
          $.getCurrentMonthLastDay=function(format){
              var date=new Date();
              var fDate=new Date(date.getFullYear(),date.getMonth()+1,0,23,59,59,999);
              return $.getFormateDate(format,fDate);
          };
          /**
           * 格式化日期
           */
          $.getFormateDate = function(fmt,date){
              if(!date) date=new Date();
              var o={   
              "M+" : date.getMonth()+1, //月份     
              "d+" : date.getDate(), //日     
              "h+" : date.getHours()%12 == 0 ? 12 : date.getHours()%12, //小時
              "H+" : date.getHours(), //小時
              "m+" : date.getMinutes(), //分
              "s+" : date.getSeconds(), //秒
              "q+" : Math.floor((date.getMonth()+3)/3), //季度
              "S" : date.getMilliseconds() //毫秒
              };
              var week={
              "0" : "\u65e5",
              "1" : "\u4e00",
              "2" : "\u4e8c",
              "3" : "\u4e09",
              "4" : "\u56db",
              "5" : "\u4e94",
              "6" : "\u516d"    
              };
              if(/(y+)/.test(fmt)){ 
                  fmt=fmt.replace(RegExp.$1, (date.getFullYear()+"").substr(4 - RegExp.$1.length));     
              }     
              if(/(E+)/.test(fmt)){
                  fmt=fmt.replace(RegExp.$1, ((RegExp.$1.length>1) ? (RegExp.$1.length>2 ? "\u661f\u671f" : "\u5468") : "")+week[date.getDay()+""]);     
              }     
              for(var k in o){
                  if(new RegExp("("+ k +")").test(fmt)){
                      fmt = fmt.replace(RegExp.$1, (RegExp.$1.length==1) ? (o[k]) : (("00"+ o[k]).substr((""+ o[k]).length)));
                  }
              }
              return fmt;
          };
          })(jQuery);
          posted on 2012-07-18 21:21 張慧 閱讀(5740) 評論(3)  編輯  收藏

          Feedback

          # re: form序列化成json串 2013-08-01 11:32 趙歡歡
          都是固定個電飯鍋  回復  更多評論
            

          # re: form序列化成json串[未登錄] 2015-02-12 17:43 123
          123123  回復  更多評論
            

          # re: form序列化成json串 2015-05-09 15:56 王啟軍
          王啟軍的內容  回復  更多評論
            


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 广安市| 清水县| 乌拉特前旗| 贡山| 紫阳县| 双柏县| 南通市| 忻城县| 沧源| 达拉特旗| 阳江市| 仲巴县| 门源| 磐安县| 大余县| 惠州市| 横峰县| 洪泽县| 孟连| 清河县| 镇巴县| 延安市| 滕州市| 苗栗市| 剑河县| 衢州市| 贵定县| 上高县| 宽城| 禹州市| 融水| 东辽县| 景谷| 繁峙县| 靖西县| 岐山县| 扎鲁特旗| 宜昌市| 凌云县| 库尔勒市| 林甸县|