六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 40|回复: 0

form序列化成json串

[复制链接]

升级  85.33%

48

主题

48

主题

48

主题

秀才

Rank: 2

积分
178
 楼主| 发表于 2013-1-29 08:43:07 | 显示全部楼层 |阅读模式
 
;(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);
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表