当前位置: 首页 > news >正文

jQuery实现下拉列表复选框 可多选

jQuery实现下拉列表复选框,可多选, 将选择的value值以逗号隔开,存到input文本框 id=checkedVal。

取消选择时,采用直接替换为空的方式删除,适用于选项值无重复的情况。
 


<div class="dropup" style="position: relative;">
	<button class="btn btn-default dropdown-toggle form-control select_multiple" style="width: 100%;margin-left: 0px;" type="button" id="dropdownMenu21" data-toggle="dropdown">
    	<span class="select_text" data-is-select="false">--请选择--</span>
    	<span class="caret"></span>
  	</button>
  	<ul class="dropdown-menu dropdown_item" style="bottom: auto;">
    	<li><input type="checkbox" class="check_box" value="aa" /> <span>Action</span></li>
    	<li><input type="checkbox" class="check_box" value="bb"/> <span>Another action</span></li>
    	<li><input type="checkbox" class="check_box" value="cc"/> <span>Something else here</span></li>
    	<li><input type="checkbox" class="check_box" value="dd"/> <span>Separated link</span></li>
  	</ul><!-- 为了方便演示,type设置text了,实际中可以设置成hidden -->
	<input type="text" name="" class="select_val" id=checkedVal/>
</div>
 
//录入方式多选下拉复选框实现
    $(document).on("click",".check_box",function(event){
      event.stopPropagation();//阻止事件冒泡,防止触发li的点击事件
        //console.log("checked:",$(this).prop("checked"));
      //勾选的项名称
      var $selectTextDom=$(this).parent("li").parent("ul").siblings("button").children(".select_text");
      //勾选项的值
      var $selectValDom=$(this).parent("li").parent("ul").siblings(".select_val");
        var isSelected = $(this).prop("checked");
        console.log("isSelected:",isSelected);
      var selectText = $selectTextDom.val();//文本值,用于显示
      var selectVal = $selectValDom.val();//实际值,会提交到后台的
      var selected_text = $(this).siblings("span").text();//当次勾选的文本值
      var selected_val = $(this).val();//当次勾选的实际值
      //判断是否选择
      if(isSelected==true){
            console.log("selectVal:",selectVal);
            console.log("selectText:",selectText);
            if (selectVal == ""){
                selectText=selected_text;
                selectVal=selected_val;
            }
            else {
                selectText += ","+selected_text;  //加入选择的text
             selectVal += ","+selected_val;      //加入选择的值val
            }
            console.log("selectVal:",selectVal);
            console.log("selectText:",selectText);
      }
        else{
            //取消选择
         selectText=selectText.replace(selected_text,"").replace(",,",",");//替换掉
         selectVal=selectVal.replace(selected_val,"").replace(",,",",");//替换掉

            //判断第一个字符是否是逗号
         if(selectText.charAt(0)==","){
            //去除开头逗号
            selectText=selectText.substring(1,selectText.length);
            selectVal=selectVal.substring(1,selectVal.length);
         }
             //判断最后一个字符是否是逗号
         if(selectText.charAt(selectText.length - 1)==","){
            //去除末尾逗号
            selectText=selectText.substring(0,selectText.length - 1);
            selectVal=selectVal.substring(0,selectVal.length - 1);
         }

        }

      $selectTextDom.val(selectText);
      $selectValDom.val(selectVal);
        $('#checkedVal').val(selectVal); //val赋值

   })

参考:https://blog.csdn.net/zyb112211/article/details/80021170?spm=1001.2101.3001.6650.2&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-2-80021170-blog-101476214.t5_layer_eslanding_A_4&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-2-80021170-blog-101476214.t5_layer_eslanding_A_4&utm_relevant_index=3

相关文章:

  • 【数据结构】图(邻接矩阵、邻接表、十字链表、邻接多重表)的数据结构(C++实现)
  • vue 在线预览PDF
  • 老照片怎么修复清晰?两分钟让你学会三个办法
  • grafana-用户管理
  • 八大排序 (上)
  • 第一讲:如何使用go-client连接k8s
  • rac节点停止和启动
  • NFS使用-动态供应
  • SAP Commerce Cloud ASM 模块的登录过程
  • 数据库迁移-国产化-迁移建议-GreenPlum DB向GBase 8a 迁移
  • Python Flask MongoDB Web开发:前 言
  • element-ui 组件库 button 源码分析
  • 二、学习Lua 环境安装
  • 本地快速部署 TiDB 集群
  • “金九银十”这几天刚整理出炉的两份最全“Java 面试宝典+Java 核心知识集”
  • @jsonView过滤属性
  • centos安装java运行环境jdk+tomcat
  • ComponentOne 2017 V2版本正式发布
  • JavaScript 是如何工作的:WebRTC 和对等网络的机制!
  • mysql innodb 索引使用指南
  • V4L2视频输入框架概述
  • vue从创建到完整的饿了么(18)购物车详细信息的展示与删除
  • 爱情 北京女病人
  • 工作踩坑系列——https访问遇到“已阻止载入混合活动内容”
  • 基于axios的vue插件,让http请求更简单
  • 聊聊sentinel的DegradeSlot
  • 浅析微信支付:申请退款、退款回调接口、查询退款
  • 大数据全解:定义、价值及挑战
  • 湖北分布式智能数据采集方法有哪些?
  • 进程与线程(三)——进程/线程间通信
  • 正则表达式-基础知识Review
  • $NOIp2018$劝退记
  • (差分)胡桃爱原石
  • (附源码)springboot学生选课系统 毕业设计 612555
  • (附源码)计算机毕业设计SSM智能化管理的仓库管理
  • (三分钟)速览传统边缘检测算子
  • (四)七种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划MATLAB
  • (译)计算距离、方位和更多经纬度之间的点
  • (原創) 如何刪除Windows Live Writer留在本機的文章? (Web) (Windows Live Writer)
  • (转)Google的Objective-C编码规范
  • (转)Linux下编译安装log4cxx
  • (转)创业家杂志:UCWEB天使第一步
  • (转)视频码率,帧率和分辨率的联系与区别
  • .net 调用php,php 调用.net com组件 --
  • .net连接oracle数据库
  • .stream().map与.stream().flatMap的使用
  • /usr/bin/env: node: No such file or directory
  • ??eclipse的安装配置问题!??
  • @property @synthesize @dynamic 及相关属性作用探究
  • [3300万人的聊天室] 作为产品的上游公司该如何?
  • [Bugku]密码???[writeup]
  • [C#]C# OpenVINO部署yolov8图像分类模型
  • [C#]winform部署yolov9的onnx模型
  • [C/C++] C/C++中数字与字符串之间的转换
  • [C++]STL之map