问题描述

我的每一个复选框 是 利用 data声明的数组进行循环 遍历出来的

然后当我点击全选及反选的时候  我操作了data中的item  遍历修改了 ischeck属性  页面上也是利用这个属性显示选中/非选中

出现的bug

当我反复点击了全选后  点击form表单的保存   获取的 表单的value中  关于复选框的值  会重复出现多个 例如复选框本身5个 当我反复点击全选5次后  复选框的value变成了25  原因是  利用item 循环的复选框 虽然通过外在修改了他的checked的属性  但是之前渲染的复选框 的值 依然存在

解决办法

axml 部分

<form  onSubmit="formSubmit" id="myform"><checkbox-group name="members"><label class="checkbox" a:for="{{items}}" ><checkbox name="checkbox" onChange="checkSingle" data-ckindex="{{index}}" value="{{item}}" checked="{{item.isCheck}}" disabled="{{item.disabled}}" /><text class="checkbox-text">{{item.realName}}</text></label></checkbox-group><view class="{{items.length == 0 ? 'hidden' : 'checkbox_right'}}"><checkbox value='全选' onChange='checkedAll'></checkbox> <text >一键全选</text></view><button class="btn" formType="submit">保存</button>
</form>

js部分

  formSubmit:function(e){const params = e.detail.value;delete params['members']params['members'] = this.data.items.filter((i)=> i.isCheck)console.info(params)},checkSingle:function(e){console.info(e)let ckval = e.detail.valuelet ckindex = e.currentTarget.dataset.ckindexlet list = this.data.items.concat();list[ckindex]['isCheck'] = ckval;this.setData({items: list})},checkedAll:function (e) {console.info(e)let that = thislet list = that.data.items.concat();list.map(o => {o.isCheck = e.detail.value;});that.setData({items: JSON.parse(JSON.stringify(list))})}

解决思路:

1.form表单提交的时候 放弃使用 关于复选框的value  统一使用  data中 循环的数组数据

2.全选 或者单点 某个复选框的时候 都去操作一下 data中的item   开始想循环 考虑到效率 这里利用了索引取值 提高性能

3. 单点 全选  都操作 data中的数组中的对象   选中 ischeck  => true   取消  ischeck => false

4. 最后form表单提交  删除 value中的复选框信息  然后 将data中的复选框信息赋值给 form的value里   这里使用filter过滤 筛掉 ischeck 是false的情况

钉钉小程序复选框 全选反选 表单获取内容有误处理相关推荐

  1. 小程序实现复选框全选和取消全选

    页面逻辑是,在小程序复选框列表页面上单独放一个复选框用于全选(设置class为position: fixed;即可固定在页面上),当点击全选时,页面所有复选框都会勾上,再次点击后页面所有复选框的打√都 ...

  2. 复选框全选效果,根据单个复选框的选择情况确定全选复选框是否被选

    复选框全选与全不选效果 逻辑:复选框的checked属性与复选框全选效果对应起来,全选复选框checked:true 时,全部复选框checked:true: 全选框checked:false 时,全 ...

  3. JS 原生实现复选框全选反选功能

    ** JS 原生实现复选框全选反选功能 ** 按钮功能实现思路: 全选按钮: 直接将全选按钮的状态赋值给每一个 复选框. 复选框:只有当所有的复选框选中时,全选按钮才能选中,所以每当复选框每点击一次就 ...

  4. html 怎么整体全选功能,html复选框全选按钮

    如何用html做复选框全选中和全不选中 html中实现单击单击一个按钮实现全部选中,在点击一 function selectAllDels() { var allCheckBoxs = documen ...

  5. Jquery 复选框全选与反选点击执行一次然后失效解决方案

    Jquery 复选框全选与反选点击执行一次然后失效解决方案 参考文章: (1)Jquery 复选框全选与反选点击执行一次然后失效解决方案 (2)https://www.cnblogs.com/feng ...

  6. jQuery中的几个案例:隔行变色、复选框全选和全不选

    1 表格隔行变色 1 技术分析: 1 )基本过滤选择器: odd: even: 2 )jq添加和移除样式: addClass(); removeClass(); 2 代码实现 <script s ...

  7. 自制jQuery 复选框全选与反选插件

    (function ($) { //复选框全选 $.fn.checkAll = function (options) { var defaults = { chName:"checkName ...

  8. 复选框 全选 以及 获取所有选中的值

    复选框 全选 以及 获取所有选中的值 总结一下 jsp中获取 数据 <%Map<String,List> map = (Map<String,List>)Function ...

  9. html复选框全选怎么实现,js html css实现复选框全选与反选

    本文实例为大家分享了js复选框全选与反选实现代码,供大家参考,具体内容如下 html+css+js实现复选框全选与反选 table,tr,td { border:1px solid red; } fu ...

最新文章

  1. Alpha系列(四)——主动投资管理定律(基本篇)
  2. MySQL的库表详细操作
  3. vmware创建虚拟机不识别网卡
  4. ASA防火墙16 SSL/×××
  5. **加密解密基础、PKI及SSL、创建私有CA**
  6. 王者荣耀服务器未响应8月5日苹果,王者荣耀:世冠小组赛8月5日前瞻预测
  7. Permutation(构造+思维)
  8. SpringBoot与JPA
  9. CRM【第三篇】: crm业务
  10. 好程序员分享js实现简单的板球游
  11. BS和CS的区别有哪些:
  12. AI上推荐 之 FiBiNET模型(特征重要性选择与双线性特征交叉)
  13. linux系统新增2t以上硬盘,在linux下新增一块硬盘的操作。(包含大于2T的硬盘在linux下挂载操作)...
  14. 中兴oltc320用户手册_中兴OLT常用命令
  15. Spring-IOC 解耦详解
  16. Java面试题2017版
  17. 正大国际期货:外盘黄金交易中如何用MACD指标捕捉波段
  18. stata里reghdfe函数在不同固定效应设计下的观测值问题
  19. python爬虫报错: <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED]
  20. 在大数据和人工智能时代,我们是否需要分布式流处理?

热门文章

  1. 天地孤影任我行(东邪西毒电影原声曲)铃声 天地孤影任我行(...
  2. mysql 开源聊天系统_轻量级的开源企业聊天软件 喧喧聊天(界面很不错)
  3. 【有利可图网】PS实战教程25:巧用PS设计制作滑落一半的海报
  4. Python操作SQL server向其中插入数据时报错,且报错内容没有指向性。
  5. 网络安全运维工程师数据库的核心能力有什么?
  6. pdf生成目录-如何给没有目录的pdf手动添加目录
  7. 利用Metasploit控制目标电脑(Win7_x64系统)
  8. 史上很全的注册表修改大全
  9. 数学速算法_适合小学三、四年级的心算法,再“笨”的学生,也不用列竖式
  10. PNAS:人类大脑性别间差异研究—基于结构、功能及转录组多模态分析