表单序列化serializeArray()方法获取未选中的CheckBox

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

猜你喜欢

转载自www.cnblogs.com/opel/p/10097919.html