$().serializeJson()获取不到type=“checkbox“的name

在 jQuery 中,`serializeJson()` 方法不会自动序列化复选框(checkbox)的值。它只会序列化选中的表单元素(如文本框、下拉列表等)的值。

如果你想要序列化复选框的值,你可以使用`serializeArray()` 方法来获取表单中所有的元素,然后自行处理复选框的值。下面是一个示例:

$.fn.serializeJson = function() {
  const formData = $(this).serializeArray();
  const json = {};

  $.each(formData, function() {
    if (json[this.name]) {
      if (!json[this.name].push) {
        json[this.name] = [json[this.name]];
      }
      json[this.name].push(this.value || '');
    } else {
      json[this.name] = this.value || '';
    }
  });

  return json;
};

// 示例表单
<form id="myForm">
  <input type="text" name="name" value="John">
  <input type="checkbox" name="hobbies" value="reading" checked>
  <input type="checkbox" name="hobbies" value="swimming">
  <input type="checkbox" name="hobbies" value="gaming" checked>
</form>

// 使用 serializeJson() 方法获取 JSON 对象
const jsonData = $('#myForm').serializeJson();
console.log(jsonData);

上述代码中,我们自定义了`serializeJson()`方法,它首先使用`serializeArray()`方法获取表单数据,然后遍历每个表单元素,将其名称(name)作为键,值作为值,构建一个 JSON 对象。对于复选框,如果有多个选中的值,它们将被存储为数组。

在上面的示例中,`console.log(jsonData)`将输出以下结果:


{
  "name": "John",
  "hobbies": ["reading", "gaming"]
}

注意,`serializeJson()`方法只能序列化表单元素的值,而不会序列化其他属性。如果你需要序列化其他属性,你可以根据需要进行自定义扩展。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值