$().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;
};

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

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

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


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

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

你可能感兴趣的:(javascript,jquery)