serializeArray()方法获取的表单形式为数组对象 arr=[{name:表格1,value:123},{name:表格2,value:123}]的形式,
但它获取不到未选中的CheckBox的name和value值,所以,以下方法就是将无法获取到的CheckBox值获取到:
$.fn.serializeJson=function(){ //表单序列化获取未选中的CheckBox var serializeObj={}; var temp=this.serializeArray(); var not_checked_object=$('input[type=checkbox]:not(:checked)', this); $.each(not_checked_object, function () { if (!temp.hasOwnProperty(this.name)){//this指没选中的一个object temp.push({name: this.name, value: ""}); } }); $(temp).each(function(){ //将有相通name的CheckBox合并到一个数组中 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; };
调用方式:var formData=$(".js-sys-config").serializeJson();