表單序列化serializeArray()方法獲取未選中的CheckBox
阿新 • • 發佈:2018-12-10
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();