jquery批量设置和获取表单数据

大家在获取表单数据和给表单赋值的时候是否也会像下面这样写:
这里写图片描述
要是表单很长的话真是要泪奔。。。
有人说获取数据可以给jquery添加serializeObject方法:

**
 * 表单序列化为json对象
 * 用法:var savaData = $('#Form').serializeObject();
 */
$.fn.serializeObject = function () {
  var o = {};
  var a = this.serializeArray();
  $.each(a, function () {
    if (o[this.name] !== undefined) {
      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;
};

但是有个问题就是serializeArray() 这个方法是会忽略disabled="disabled" 表单元素。
自己花了些时间整理了以下方法:

注意:要保证name 值和datakey 值对应

/**
 * 表单赋值
 * @param data
 * 用法:$('#Form').serializeObject(data);
 */
$.fn.setFormData = function (data) {
  for (var key in data) {
    var $this = this;
    var $tag = $this.find('[name=' + key + ']');
    if ($tag.length > 1 ) {
      $tag.prop('checked',false);
      if(data[key]){
        var item = data[key].split(',');
        $.each(item, function (i, val) {
          var $curTag = $this.find('[name=' + key + '][value=' + val + ']');
          $curTag.prop('checked', true);
        })
      }
    } else {
      $tag.val(data[key])
    }
  }
};
/**
 * 获取表单值
 * @returns {{}}
 * 用法:var savaData = $('#Form').getFormData();
 */
$.fn.getFormData = function () {
  var obj = {};
  var $tags = this.find('[name]');
  $tags.each(function () {
    var key = $(this).attr('name');
    if (obj.hasOwnProperty(key) && $(this).is(':checked')) {
      obj[key] = obj[key] + ',' + $(this).val();//checkebox的值是‘aa,bb,cc’这样的格式,要数组的自行修改
      return true ;
    }
    var isCheck= $(this).is(function(){
      var type = $(this).attr('type');
      return type =='checkbox' || type =='radio'
    });
    if(isCheck){
      if($(this).is(':checked')){
        obj[key] = $(this).val();
      }
      return true;
    }else{
      obj[key] = $(this).val();
    }
  });
  return obj;
};

查看dome

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值