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

news/2024/7/10 23:08:04 标签: javascript, jquery

在 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()`方法只能序列化表单元素的值,而不会序列化其他属性。如果你需要序列化其他属性,你可以根据需要进行自定义扩展。


http://www.niftyadmin.cn/n/5125156.html

相关文章

Django的查询所有,根据用户名查询,增加用户操作

1.路由 from meiduo_admin.user.user_views import UsersViewurlpatterns [# 用户操作路由path(users/, UsersView.as_view()), ]2. 序列化器 from rest_framework import serializersfrom meiduo_admin.models import Userclass UsersSerialize(serializers.ModelSerialize…

Git: 仓库clone和用户配置

git clone 两种方式clone远程仓库到本地。 通过ssh 命令格式&#xff1a; git clone gitxxxxxx.git使用这种方法需要提前创建ssh秘钥。 首先打开一个git控制台&#xff0c;输入命令 ssh-keygen -t ed25519 -C “xxxxxxxxxx.com”输入命令后需要点击四次回车&#xff0c;其…

FL Studio2024重磅更新 包含FL水果21.1破解版安装包下载

FL Studio是一款非常好用方便的音频媒体制作工具&#xff0c;它的功能是非常的强大全面的&#xff0c;想必那些喜欢音乐创作的朋友们应该都知道这款软件是多么的好用吧&#xff0c;它还能够给用户们带来更多的创作灵感&#xff0c;进一步加强提升我们的音乐制作能力。该软件还有…

Unity报错:Microsoft Visual C# Compiler version

Unity报错:Microsoft Visual C# Compiler version 问题解决方案总结 问题 Microsoft Visual C# Compiler version 2.9.1.65535 (9d34608e) Copyright © Microsoft Corporation 切换版本或者使用老项目的时候可能会出现这个报错&#xff0c;这个报错就是项目设置的问题 …

STM32 定时器介绍

STM32F103系列单片机定时器主要有&#xff1a;系统定时器SysTick&#xff0c;2个高级定时器TIM1和TIM8&#xff0c;4个通用定时器TIM2/3/4/5&#xff0c;2个基本定时器TIM6和TIM7。下面先简单介绍一下&#xff1a; 基本定时器&#xff1a;基本定时器只能计时&#xff0c;不能产…

vue使用smooth-signature实现移动端电子签字,包括横竖屏

vue使用smooth-signature实现移动端电子签字&#xff0c;包括横竖屏 1.使用smooth-signature npm install --save smooth-signature二.页面引入插件 import SmoothSignature from "smooth-signature";三.实现效果 四.完整代码 <template><div class&quo…

什么是React中的有状态组件(stateful component)和无状态组件(stateless component)?

聚沙成塔每天进步一点点 ⭐ 专栏简介 前端入门之旅&#xff1a;探索Web开发的奇妙世界 欢迎来到前端入门之旅&#xff01;感兴趣的可以订阅本专栏哦&#xff01;这个专栏是为那些对Web开发感兴趣、刚刚踏入前端领域的朋友们量身打造的。无论你是完全的新手还是有一些基础的开发…

Flink将数据写入MySQL(JDBC)

一、写在前面 在实际的生产环境中&#xff0c;我们经常会把Flink处理的数据写入MySQL、Doris等数据库中&#xff0c;下面以MySQL为例&#xff0c;使用JDBC的方式将Flink的数据实时数据写入MySQL。 二、代码示例 2.1 版本说明 <flink.version>1.14.6</flink.version…