html+javascript+bootstrap实现层级多选框全层全选和多选功能


Posted in Javascript onMarch 09, 2017

想做一个先按层级排序并可以多选的功能,首先倾向于用多层标签式的,直接选定加在文本域里, 查到这文,非常详细,如果大家需要做前面所说的功能,可以参考这个地址,http://mrthink.net/jquery-plugin-iselecttags/

     但是,考虑到如果要做一个选项数不确定、可能非常多,用标签会容易视觉疲劳,同时要求随着选项数的变化,最小程度影响网页布局和效果,于是选择用层级的多选框,也就是设置电脑的那种常见效果。第二层选项可以折叠/展开到第一层下面,用bootstrap的 data-toggle="collapse" data-target="#demo1" 进行关联第二层折叠效果。

     具体代码如下:

<script>
//当第一层选项选定,则该选项下的第二层全部被选定
  function allSelect(check_v, checkname) {
    var v_item = document.getElementsByName(check_v);
    var items = document.getElementsByName(checkname);
    for (var i = 0; i < items.length; ++i) {
      if (v_item[0].checked) {
        items[i].checked = true;
      }
      else {
        items[i].checked = false;
      }
    }
  }
//当第二层选项全部被选定,则第一层被选定;若第二层选项至少有一个没被选定,则第一层不被选定
  function singleSelect2parent(check_v, checkname) {
    var v_item = document.getElementsByName(check_v);
    var items = document.getElementsByName(checkname);
    var childStatus = true;
    for (var i = 0; i < items.length; ++i) {
      childStatus = (childStatus && items[i].checked);
    }
    if (childStatus) {
      v_item[0].checked = true;
    }
    else {
      v_item[0].checked = false;
    }
  }
//全选按钮,点击全选,则所有选项被选中
  function allChecked() {
    var inputItems = document.getElementsByClassName("checkbox2check");
    for (var i = 0; i < inputItems.length; i++) {
      var checkItems = document.getElementsByName("checkbox" + (i+1));
      for (var j = 0; j < checkItems.length; j++) {
        checkItems[j].checked = true;
      }
      inputItems[i].checked = true;
    }
  }
</script>
<style>
  ul li{
    list-style:none;
  }
</style>
<div>
  <input class="checkbox2check" type="checkbox" checked name="checkbox_v1" value="version1" onclick="allSelect('checkbox_v1', 'checkbox1')"><a data-toggle="collapse" data-target="#demo1">版本一<b class="caret"></b></a>
  <ul id="demo1" class="collapse in">
    <li> <input type="checkbox" checked name="checkbox1" value="layer1" onclick="singleSelect2parent('checkbox_v1', 'checkbox1')">v1.0.1</li>
    <li> <input type="checkbox" checked name="checkbox1" value="layer2" onclick="singleSelect2parent('checkbox_v1', 'checkbox1')">V1.1.1</li>
    <li> <input type="checkbox" checked name="checkbox1" value="layer3" onclick="singleSelect2parent('checkbox_v1', 'checkbox1')">V1.2.1</li>
    <li> <input type="checkbox" checked name="checkbox1" value="layer4" onclick="singleSelect2parent('checkbox_v1', 'checkbox1')">V1.3.1</li>
  </ul>
</div>
<div>
  <input class="checkbox2check" type="checkbox" checked name="checkbox_v2" value="version2" onclick="allSelect('checkbox_v2', 'checkbox2')"><a data-toggle="collapse" data-target="#demo2">版本二<b class="caret"></b></a>
  <ul id="demo2" class="collapse in">
    <li> <input type="checkbox" checked name="checkbox2" value="layer5" onclick="singleSelect2parent('checkbox_v2', 'checkbox2')">V2.0.1</li>
    <li> <input type="checkbox" checked name="checkbox2" value="layer6" onclick="singleSelect2parent('checkbox_v2', 'checkbox2')">V2.1.1</li>
    <li> <input type="checkbox" checked name="checkbox2" value="layer7" onclick="singleSelect2parent('checkbox_v2', 'checkbox2')">V2.2.1</li>
  </ul>
</div>
<div>
  <input class="checkbox2check" type="checkbox" checked name="checkbox_v3" value="version3" onclick="allSelect('checkbox_v3', 'checkbox3')"><a data-toggle="collapse" data-target="#demo3">版本三<b class="caret"></b></a>
  <ul id="demo3" class="collapse in">
    <li> <input type="checkbox" checked name="checkbox3" value="layer8" onclick="singleSelect2parent('checkbox_v3', 'checkbox3')">V3.0.1</li>
    <li> <input type="checkbox" checked name="checkbox3" value="layer9" onclick="singleSelect2parent('checkbox_v3', 'checkbox3')">V3.1.1</li>
    <li> <input type="checkbox" checked name="checkbox3" value="layer10" onclick="singleSelect2parent('checkbox_v3', 'checkbox3')">V3.2.1</li>
  </ul>
</div>
<button type="button" onclick="allChecked()">全选</button>

以上所述是小编给大家介绍的html+javascript+bootstrap实现层级多选框全层全选和多选功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
javascript 写类方式之五
Jul 05 Javascript
jquery.post用法示例代码
Jan 03 Javascript
jquery选择器使用详解
Apr 08 Javascript
JavaScript函数作用域链分析
Feb 13 Javascript
JS返回iframe中frameBorder属性值的方法
Apr 01 Javascript
jQuery实现右侧显示可向左滑动展示的深色QQ客服效果代码
Oct 23 Javascript
AngularJS中实现用户访问的身份认证和表单验证功能
Apr 21 Javascript
package.json文件配置详解
Jun 15 Javascript
js实现把时间戳转换为yyyy-MM-dd hh:mm 格式(es6语法)
Dec 28 Javascript
JavaScript创建对象的常用方式总结
Aug 10 Javascript
layer弹出框确定前验证:弹出消息框的方法(弹出两个layer)
Sep 21 Javascript
JavaScript实现图片伪异步上传过程解析
Apr 10 Javascript
Node.js常用工具之util模块
Mar 09 #Javascript
js遍历json对象所有key及根据动态key获取值的方法(必看)
Mar 09 #Javascript
jQuery插件HighCharts实现的2D回归直线散点效果示例【附demo源码下载】
Mar 09 #Javascript
js实现简单的二级联动效果
Mar 09 #Javascript
jquery表单提交带错误信息提示效果
Mar 09 #Javascript
AngularJS 防止页面闪烁的方法
Mar 09 #Javascript
js读取json文件片段中的数据实例
Mar 09 #Javascript
You might like
基于PHP 面向对象之成员方法详解
2013/05/04 PHP
关于zend studio 出现乱码问题的总结
2013/06/23 PHP
PHP中非常有用却鲜有人知的函数集锦
2019/08/17 PHP
php传值和传引用的区别点总结
2019/11/19 PHP
Ext面向对象开发实践(续)
2008/11/18 Javascript
form表单action提交的js部分与html部分
2014/01/07 Javascript
javascript实现数字+字母验证码的简单实例
2014/02/10 Javascript
处理文本部分内容的TextRange对象应用实例
2014/07/29 Javascript
通过location.replace禁止浏览器后退防止重复提交
2014/09/04 Javascript
jQuery学习心得总结(必看篇)
2016/06/10 Javascript
AngularJS国际化详解及示例代码
2016/08/18 Javascript
JS简单获取客户端IP地址的方法【调用搜狐接口】
2016/09/05 Javascript
ionic+AngularJs实现获取验证码倒计时按钮
2017/04/22 Javascript
Angular 2父子组件之间共享服务通信的实现
2017/07/04 Javascript
nodejs动态创建二维码的方法
2017/08/12 NodeJs
浅谈JsonObject中的key-value数据解析排序问题
2017/12/06 Javascript
JS改变页面颜色源码分享
2018/02/24 Javascript
Vue 获取数组键名的方法
2018/06/21 Javascript
JavaScript根据json生成html表格的示例代码
2018/10/24 Javascript
如何使用 vue + d3 画一棵树
2018/12/03 Javascript
微信小程序添加插屏广告并设置显示频率(一天一次)
2019/12/06 Javascript
使用Python编写vim插件的简单示例
2015/04/17 Python
python使用arp欺骗伪造网关的方法
2015/04/24 Python
Python文件操作之合并文本文件内容示例代码
2017/09/19 Python
MySQL适配器PyMySQL详解
2017/09/20 Python
对python中使用requests模块参数编码的不同处理方法
2018/05/18 Python
Python中collections模块的基本使用教程
2018/12/07 Python
用Python解决x的n次方问题
2019/02/08 Python
Python supervisor强大的进程管理工具的使用
2019/04/24 Python
python 控制Asterisk AMI接口外呼电话的例子
2019/08/08 Python
django框架auth模块用法实例详解
2019/12/10 Python
德国家具在线:Fashion For Home
2017/03/11 全球购物
DataList 能否分页,请问如何实现?
2015/05/03 面试题
企业财务人员岗位职责
2015/04/14 职场文书
实用干货:敬酒词大全,帮你应付各种场合
2019/11/21 职场文书
分享MySQL常用 内核 Debug 几种常见方法
2022/03/17 MySQL