E8-写了一个方法,处理一个表单里有多组需要实现单选或复选的复选框

起因

今天同事发来需求,要做一个工作流,其中表单里有几组选项。在纸质单上是留出位置画勾选择的。简单的聊了一下对填报的要求,要求有的组要控制单选,有的组还不需要制多选。用文字来描述很晦涩,看到表单估计小伙伴们就知道什么意思了。表单如下图,其中“运输方式”和“运费承担”的选项之间是要做单选控制的,付款方式则不用。

经过

选去回顾了去年处理复选框的经历,看看有哪个能直接拿过来用的。

E8-怎么写一段JS去控制CheckBox_js监听checkbox变化-CSDN博客

E8-控制一组CheckBox的单选_泛微e8 触发checkbox事件-CSDN博客

E8-怎么实现控制一组CheckBox中至少选一个_qt 如何判断两个checkbox 同时只能选中一个-CSDN博客

如果按以上这些,拼凑一下也能实现,但代码要写很长,且复用性不强。

于是冒出了一个想法,尝试写一个方法,去处理已知的关于复选框以及文本的各种控制。

结果

按照以上思路,写了如下程序。注释里写了代码的作用。喜欢的小伙伴们请关注、点赞、评论。大家的鼓励是我持续创作的动力。感谢!

<!-- script代码,如果需要引用js文件,请使用与HTML中相同的方式。 -->
<script type="text/javascript">
  // 定义存放复选按钮的数组1:运输方式
  var checkBoxArray1 = [];
  checkBoxArray1.push( $("#field11535"));        //汽运送货
  checkBoxArray1.push( $("#field11536"));        //客户自提

  // 定义存放复选按钮的数组2:运费承担
  var checkBoxArray2 = [];
  checkBoxArray2.push( $("#field11537"));        //供方承担
  checkBoxArray2.push( $("#field11538"));        //需方承担

  // 定义存放复选按钮的数组2:付款方式
  var checkBoxArray3 = [];
  checkBoxArray3.push( $("#field11540"));        //电汇
  checkBoxArray3.push( $("#field11541"));        //承兑
  checkBoxArray3.push( $("#field11542"));        //其它

  // 运输方式的字符串拼接,专门负责拼接字符串的。
  // 参数1:当前控件,参数2:数组,参数3:文件框,参数4:选择方式(单选:S;多选:M)
  function checkboxProcess(obj, checkBoxArray, strBox,  selectMode) {
        str = "";
    // 如果是单选模式,检查当前复选框的选中状态,如果当前复选框是选中状态,遍历数组,取消其它复选框的选中状态。
    if(selectMode == "S") {
      if(obj.prop("checked")) {
        for(var index = 0; index<checkBoxArray.length; index++) {
          if(obj.attr('id') != checkBoxArray[index].attr("id")) {
              checkBoxArray[index].prop("checked", false);
            checkBoxArray[index].next("span").prop("class", "jNiceCheckbox");
          }
        }
      }
      str = obj.attr("temptitle"); //单选
    }

    // 如果是多选模式,只做字符串的拼接。
    if(selectMode == "M") {
      for(var index = 0; index<checkBoxArray.length; index++) {
        if(checkBoxArray[index].prop("checked")) {
          str = str + checkBoxArray[index].attr("temptitle") + "、"; //多选
                }
      }
    }
    strBox.val(str);    
  }

// 为控件绑定事件 
jQuery(document).ready(function(){
  for(var index = 0; index<checkBoxArray1.length; index++) {
    checkBoxArray1[index].click(function(){
      checkboxProcess($(this), checkBoxArray1, $("#field11543"), "S");
    });
  }
  for(var index = 0; index<checkBoxArray2.length; index++) {
    checkBoxArray2[index].click(function(){
      checkboxProcess($(this), checkBoxArray2, $("#field11544"), "S");
    });
  }
  for(var index = 0; index<checkBoxArray3.length; index++) {
    checkBoxArray3[index].click(function(){
      checkboxProcess($(this), checkBoxArray3, $("#field11545"), "M");
    });
  }
});
</script>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/430333.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

上位机图像处理和嵌入式模块部署(qmacvisual入门)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 虽然我们前面学习了很多的知识点&#xff0c;比如说在windows这边&#xff0c;用qt写界面&#xff0c;用opencv写图像处理代码&#xff1b;在linux…

Jmeter 性能 —— 50TPS与秒杀分析!

1、50tps——5tps分析 50tps基本上已经满足了大部分中小型企业要求了 需求&#xff1a;期望我项目的接口&#xff0c;都要能满足50tps&#xff1f; 算 50tps&#xff1a;50 个事务每秒50 t/s 1分钟&#xff1a;50\*60s 3000 事务1小时 3000 \* 60 180000 事务 1小时要处理…

基于Golang客户端实现Nacos服务注册发现和配置管理

基于Golang客户端实现Nacos服务注册发现和配置管理 背景 最近需要把Golang实现的一个web项目集成到基于Spring Cloud Alibaba的微服务体系中&#xff0c;走Spring Cloud Gateway网关路由实现统一的鉴权入口。 软件版本 组件名称组件版本Nacos2.2.0Go1.21.0Ginv1.9.1Nacos-s…

WhatsApp API号注册平台价格对比:帮你选择性价比最高的服务

WhatsApp作为全球使用人数众多的即时通讯工具&#xff0c;推出的API服务为企业提供了强大的客户互动能力。然而面对众多提供WhatsApp API号注册的平台&#xff0c;企业在选择时很容易感到困惑。这篇文章将会对目前市面上比较主流的WhatsApp API号注册平台进行价格对比&#xff…

三、加载路径对桁架的影响

加载路径&#xff1a; \color{green}加载路径&#xff1a; 加载路径&#xff1a; 材料在受力时所经历的应力和应变变化路径。在塑性力学中&#xff0c;加载路径对材料的变形行为和力学性能有着重要影响。 案例分析 \color{green}案例分析 案例分析 如图所示&#xff0c;理想弹…

Linux——基础IO

目录 前言 C语言文件操作 stdin & stdout & stderr 系统文件IO open close write read 文件描述符fd 重定向 dup2 Linux下一切皆文件 缓冲区 简易缓冲区 文件系统 磁盘 创建文件 删除文件 查看文件 软硬链接 软链接 硬链接 动静态库 静态库 …

40. 【Linux教程】文件系统介绍

从本小节我们将要开始 Linux 中的文件系统&#xff0c;在 Linux 系统中&#xff0c;文件系统都是基于硬盘创建的&#xff0c;Linux 系统支持多种不同类型的文件系统管理文件和目录&#xff0c;本小节介绍几种基本常见的文件系统。 Linux 文件系统中的文件是数据的集合&#xf…

算法沉淀——动态规划之两个数组的 dp(上)(leetcode真题剖析)

算法沉淀——动态规划之两个数组的 dp 01.最长公共子序列02.不相交的线03.不同的子序列04.通配符匹配 01.最长公共子序列 题目链接&#xff1a;https://leetcode.cn/problems/longest-common-subsequence/ 给定两个字符串 text1 和 text2&#xff0c;返回这两个字符串的最长 …

医院床旁交互系统概述 -智慧护理-全视通

全视通床旁交互系统是一种先进的医疗信息技术解决方案&#xff0c;旨在改善病患与医疗团队之间的沟通与交流。该系统通过集成多种高科技设备&#xff0c;为病患在病床边提供了一站式的信息交互平台&#xff0c;从而优化了医疗服务流程&#xff0c;提升了医疗体验。 首先&#x…

C++引入

引用不是新定义一个变量&#xff0c;而是给已经存在的变量取一个别名&#xff0c;编译器不会为了引用变量开辟内存空间&#xff0c;它和它引用的变量公用同一块内存空间。如李白被称为诗仙。李白和诗仙都是同一个人。 语法: 类型& 引用变量名(对象名)引用实体; 特性: 引用在…

coppeliasi4.0版本中使用循迹小车跟随路径时问题汇总

加入循迹小车&#xff0c;设置好路径后运行 发现报错&#xff0c;小车直线行驶不跟随设置好的路径移动 观察仿真中可知小车左右中传感器并不工作全是黑色&#xff0c;观察报错语句 Lua runtime error: [string "CUSTOMIZATION SCRIPT LeftSensor"]:12: Invalid hand…

基于SpringBoot的医护人员排班系统(代码+数据库+文档)

** &#x1f345;点赞收藏关注 → 私信领取本源代码、数据库&#x1f345; 本人在Java毕业设计领域有多年的经验&#xff0c;陆续会更新更多优质的Java实战项目 希望你能有所收获&#xff0c;少走一些弯路。&#x1f345;关注我不迷路&#x1f345;** 目录 一、研究背景 1.…

Vue 项目重复点击菜单刷新当前页面

需求&#xff1a;“在当前页面点击当前页面对应的菜单时&#xff0c;也能刷新页面。” 由于 Vue 项目的路由机制是路由不变的情况下&#xff0c;对应的组件是不重新渲染的。所以重复点击菜单不会改变路由&#xff0c;然后页面就无法刷新了。 方案一 在vue项目中&#xff0c;…

探索Python编程世界:从入门到精通

一.Python 从入门到精通 随着计算机科学的发展&#xff0c;编程已经成为了一种必备的技能。而 Python 作为一种简单易学、功能强大的编程语言&#xff0c;越来越受到人们的喜爱。本文将为初学者介绍 Python 编程的基础知识&#xff0c;帮助他们踏入 Python 编程的大门&#xf…

网络安全: Kali Linux 使用 MSF 渗透测试

目录 一、实验 1.环境 2.登录MSF&#xff08;Metasploit Framework&#xff09;控制台 3.MSF初始化 4.MSF 管理工作区 5.Kali Linux (2024.1) 对Windows server 进行网址目录扫描 6.Kali Linux (2022.4) 对Ubuntu进行网址目录扫描 7.Kali Linux (2024.1) 对Windows ser…

Java 的七种垃圾收集器

了解 Java 中的内存管理。 用 C 或 C 这样的编程语言写一个应用时&#xff0c;需要编写代码来销毁内存中不再需要的对象。当应用程序扩展得越来越复杂时&#xff0c;未使用对象被忽略释放的可能性就越大。这会导致内存泄露&#xff0c;最终内存耗尽&#xff0c;在某个时刻将没有…

Matlab/Simulink验证MAB建模规范

前言 为什么MAB&#xff1f; MathWorks Advisory Board&#xff08;MAB&#xff09;是由MathWorks公司设立的一个咨询委员会&#xff0c;旨在提供有关MathWorks产品和服务的反馈、建议和意见。MAB成员通常是来自学术界、工业界和其他领域的专业人士&#xff0c;他们在各自领域…

【Sql Server】C#通过拼接代码的方式组合添加sql语句,会出现那些情况,参数化的作用

欢迎来到《小5讲堂》&#xff0c;大家好&#xff0c;我是全栈小5。 这是《Sql Server》系列文章&#xff0c;每篇文章将以博主理解的角度展开讲解&#xff0c; 特别是针对知识点的概念进行叙说&#xff0c;大部分文章将会对这些概念进行实际例子验证&#xff0c;以此达到加深对…

【C++从0到王者】第四十七站:最小生成树

文章目录 一、最小生成树的概念1.概念2.最小生成树的构造方法 二、Kruskal算法1.算法思想2.代码实现 三、Prim算法1.算法思想2.代码实现3.试试所有节点为起始点 一、最小生成树的概念 1.概念 连通图&#xff1a;在无向图中&#xff0c;若从顶点v1到顶点v2有路径&#xff0c;则…

这本书太好了!150页就能让你上手大模型应用开发

如果问个问题&#xff1a;有哪些产品曾经创造了伟大的奇迹&#xff1f;ChatGPT 应该会当之无愧入选。 仅仅发布 5 天&#xff0c;ChatGPT 就吸引了 100 万用户——当然&#xff0c;数据不是关键&#xff0c;关键是其背后的技术开启了新的 AI 狂潮&#xff0c;成为技术变革的点火…