form序列化 java接收_form序列化成json串

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值