前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >下拉复选框

下拉复选框

作者头像
ProsperLee
发布2018-10-24 10:42:17
4.3K0
发布2018-10-24 10:42:17
举报

最近在项目开发中,有的地方用到了下拉复选框,于是再网上找了一下,有很多种写法,但自己感觉不是很好,又不想用插件,因为感觉引入的js太大,功能太繁杂,于是决定自己写一个小demo,效果如下:

(改善:当遇到选项比较多时,可以定义一个数组插入到HTML中,实现下拉的选项,可以参考省市区联动的写法:https://cloud.tencent.com/developer/article/1357764

CSS:

代码语言:javascript
复制
 1 div {
 2     display: inline-block;
 3 }
 4 
 5 select {
 6     min-width: 200px;
 7     height: 25px;
 8     border: 1px solid #000;
 9 }
10 
11 ul {
12     display: none;
13     list-style: none;
14     margin: 0;
15     padding: 0;
16     border: 1px solid #000;
17 }
18 
19 label {
20     display: block;
21     padding: 2px 10px;
22     white-space: nowrap;
23 }
24 
25 ul li:hover {
26     background-color: #aabbcc;
27 }

HTML:

代码语言:javascript
复制
 1     <div>
 2         <select name="" id="lang1"></select>
 3         <ul id="ck1">
 4             <li>
 5                 <label><input type="checkbox">HTML</label>
 6             </li>
 7             <li>
 8                 <label><input type="checkbox">CSS</label>
 9             </li>
10             <li>
11                 <label><input type="checkbox">JavaScript</label>
12             </li>
13             <li>
14                 <label><input type="checkbox">jQuery</label>
15             </li>
16             <li>
17                 <label><input type="checkbox">PHP</label>
18             </li>
19             <li>
20                 <label><input type="checkbox">MySQL</label>
21             </li>
22         </ul>
23     </div>
24     <hr><!--HTML结构不能变-->
25     <div>
26         <select name="" id="lang2"></select>
27         <ul id="ck2">
28             <li>
29                 <label><input type="checkbox">Java</label>
30             </li>
31             <li>
32                 <label><input type="checkbox">C#</label>
33             </li>
34             <li>
35                 <label><input type="checkbox">C++</label>
36             </li>
37             <li>
38                 <label><input type="checkbox">Pyhton</label>
39             </li>
40         </ul>
41     </div>
42     <input type="button" onclick="console.log({'tag1':tag1,'tag2':tag2,})" value="查看字段">

JavaScript:

代码语言:javascript
复制
 1     /**
 2      * [dropDownCk 下拉复选框]
 3      * @param  {[String]} boxId    [父级元素id]
 4      * @param  {[String]} selectId [下拉选id]
 5      * @param  {[String]} hiddenId [隐藏区域id]
 6      * @return {[Array]}          [description]
 7      */
 8     function dropDownCk(selectId,hiddenId) {
 9 
10         var boxId = "#" + boxId,
11             selectId = "#" + selectId,
12             hiddenId = "#" + hiddenId;
13         
14         $(hiddenId).mouseleave(function(){ // 鼠标离开隐藏复选区域
15             
16             $(this).hide();
17         
18         });
19         
20         $(selectId).click(function() { // 切换显示与隐藏
21 
22             $(hiddenId).toggle();
23 
24         });
25 
26         var tagArr = []; // 接收复选字段数组
27 
28         $(selectId).html("<option checked='true' style='display:none;'>" + "请选择项目" + "</option>");
29 
30         $(hiddenId + ' label').find('input').click(function() { // 点击向数组添加元素
31 
32             if ($(this).is(':checked')) {
33 
34                 tagArr.push($(this).parent().text());
35 
36                 $(selectId).html("<option checked='true' style='display:none;'>" + tagArr.join(",") + "</option>");
37 
38             } else {
39 
40                 tagArr.splice(tagArr.indexOf($(this).parent().text()), 1); // 删除对应元素
41 
42                 if (tagArr.length == 0) {
43 
44                     $(selectId).html("<option checked='true' style='display:none;'>" + "请选择项目" + "</option>");
45 
46                 } else {
47 
48                     $(selectId).html("<option checked='true' style='display:none;'>" + tagArr.join(",") + "</option>");
49 
50                 }
51 
52             }
53 
54         });
55 
56         return tagArr;
57     }
58 
59     var tag1 = dropDownCk("lang1","ck1");
60     var tag2 = dropDownCk("lang2","ck2");
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018-08-08 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 MySQL
腾讯云数据库 MySQL(TencentDB for MySQL)为用户提供安全可靠,性能卓越、易于维护的企业级云数据库服务。其具备6大企业级特性,包括企业级定制内核、企业级高可用、企业级高可靠、企业级安全、企业级扩展以及企业级智能运维。通过使用腾讯云数据库 MySQL,可实现分钟级别的数据库部署、弹性扩展以及全自动化的运维管理,不仅经济实惠,而且稳定可靠,易于运维。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档