最近做项目时,需要用到CheckBox的级联选择,于是自己动手写了一个。
这个CheckBox的级联选择是用纯JavaScript编写的,没有借助其他的JS框架。
希望能够对大家有用,同时希望大家多多指出代码中的不足!
(注:新上传了跨浏览器的版本。特别感谢“02221021”兄的帮助!)
以下是JS代码(附件中可以看效果):
//判断所有的checkbox的选中状态
//@id : checkbox的id
function checkedStatus(id){
//获取checkbox
var temp = document.getElementById(id);
//设置checkbox的下级checkbox的状态
setChildCheckBox(temp);
//设置checkbox的上级checkbox的状态
setParentCheckBox(temp);
}
//获取checkbox的下级checkbox信息
//@entity : checkbox的DOM对象
function findChildCheckBox(entity){
//存放下级checkbox的数组
var chkArray = new Array();
//判断是否有input标签
if(document.getElementsByTagName("input")){
//获取所有的input标签
var inputs = document.getElementsByTagName("input");
//遍历input标签,获取下级checkbox
for(var i = 0; i < inputs.length; i++){
var ele = inputs[i];
//判断type是“checkbox”,并且checkbox的parentId等于entity的id
if(ele.type == "checkbox" && ele.parentId == entity.id){
chkArray.push(ele);
}
}
}
return chkArray;
}
//获取checkbox的同级checkbox信息
//@entity : checkbox的DOM对象
function findBrotherCheckBox(entity){
//存放同级checkbox的数组
var chkArray = new Array();
//判断是否有input标签
if(document.getElementsByTagName("input")){
//获取所有的input标签
var inputs = document.getElementsByTagName("input");
//遍历input标签,获取同级checkbox
for(var i = 0; i < inputs.length; i++){
var ele = inputs[i];
//判断type是“checkbox”,并且checkbox的parentId等于entity的parentId
if(ele.type == "checkbox" && ele.parentId == entity.parentId){
chkArray.push(ele);
}
}
}
return chkArray;
}
//获取checkbox的上级checkbox信息
//@entity : checkbox的DOM对象
function findParentCheckBox(entity){
//存放上级checkbox的对象
var _element = null;
//判断是否有input标签
if(document.getElementsByTagName("input")){
//获取所有的input标签
var inputs = document.getElementsByTagName("input");
//遍历input标签,获取上级checkbox
for(var i = 0; i < inputs.length; i++){
var ele = inputs[i];
//判断type是“checkbox”,并且checkbox的id等于entity的parentId
if(ele.type == "checkbox" && ele.id == entity.parentId){
_element = ele;
break;
}
}
}
return _element;
}
//设置checkbox的下级checkbox的状态
//@entity : checkbox的DOM对象
function setChildCheckBox(entity){
//entity的选中状态
var status = entity.checked;
//获取entity的下级checkbox
var childList = findChildCheckBox(entity);
//判断是否有下级
if(childList.length > 0){
//遍历下级checkbox,并设置状态
for(var i = 0; i < childList.length; i++){
childList[i].checked = status;
//设置childList[i]的下级checkbox的状态
setChildCheckBox(childList[i]);
}
}
}
//设置checkbox的上级checkbox的状态
//@entity : checkbox的DOM对象
function setParentCheckBox(entity){
//entity的上级checkbox的选中状态
var parentChecked = true;
//获取entity的上级checkbox
var parentCheckBox = findParentCheckBox(entity);
//判断是否有上级
if(parentCheckBox){
//获取entity的同级checkbox
var brotherList = findBrotherCheckBox(entity);
//判断是否有同级
if(brotherList.length > 0){
//遍历同级checkbox
for(var i = 0; i < brotherList.length; i++){
//如果同级的checkbox有未选中的状态,则设置上级的checkbox的状态为false
if(brotherList[i].checked == false){
parentChecked = false;
break;
}
}
}
//设置上级checkbox的选中状态
parentCheckBox.checked = parentChecked;
//设置parentCheckbox的上级checkbox的状态
setParentCheckBox(parentCheckBox);
}
}
效果如下:
- 大小: 6.6 KB
分享到:
相关推荐
实现树形结构的CheckBox的子节点选中所有父级节点,级联选择功能,内有具体案例
使用javascript实现checkbox级联选择
本文实例讲述了jQuery实现的checkbox级联选择下拉菜单效果。分享给大家供大家参考,具体如下: <html> <head> <meta http-equiv=Content-Type content=text/html; charset=utf-8> <title>&...
flex tree+checkbox可实现级联勾选
带CheckBox和级联操作的Tree 带CheckBox和级联操作的Tree 带CheckBox和级联操作的Tree
纯JS+HTML写的checkBox Tree 级联选中 好用无BUG 1 选上级,自动选下级 2 选下级,自动选上级 在网上找的其他例子,都有BUG,本程程序绝对可用,放心下载!
checkbox 用shift键 级联选择 只需在checkbox 按钮上一个事件
这个例子可实现二级联动 比如:口1.xxxx 口xxx 口xxx 口xxx 选中1.xxxx时,会自动将其对应的3个子项选中.
CheckBox分级选中 复选框 上下级 联动
一个简单html页面,实现省市的三级级联选择,根据不同情况可以控制不同展现。
ExpandAbleListView+checkbox数组方式级联,外层列表可展开收起,内层列表使用checkbox多选框,点击之后可在顶部的gridlayout显示,顶部显示的选中与checkbox选中状态关联,点击顶部选中的item,可取消选中状态,...
flex tree+checkbox可实现级联勾选 修改后 修改CheckTreeDemoRenderer.as这个文件中 while (!cursor.afterLast){ if (cursor.current.@state == STATE_CHECKED) { noChecks++; }else if (cursor.current.@state =...
TREELIST(带有CHECKBOX功能) 博文链接:https://myhongkongzhen.iteye.com/blog/382861
多层选择 开关 评分 滑块 步进器 日期框 级联选择 下拉列表 复选框 单选框 多行文本 单行文本 textarea radio checkbox picker stepper input ,引用组件或者复制粘贴使用,提高工作效率。
js多级联动多选checkbox插件
今天总算把部门多选的效果整出来 见图: 先共享核心代码: 1:js脚本 代码如下: var treeHTML = “”; var checkList = new Array(); /*only init here*/ var barString = “└”;/*┝└*/ var degreeString = “ ...
具体代码如下所示: <div id=searchTree></div> [removed] var treeData = [{ text: Parent 1, nodes: [{ text: Child 1, nodes: [{ text: Grandchild 1 }, { text: Grandchild 2, ... }
以XML文件作级联数据源,采用树形控件显示,节点可选择Radiobutton,CheckBox,PlainText等类型。
3:Checkbox树(可能是静态树也可能是异步树),用于选择(如选择组织机构,选择数据字典项)等,最好是能够支持节点级联(这个是难点) 4:能够承载大数据量,并性能表现优异 5:能够在主流浏览器中运行良好