<html>
<head>
<meta http-equiv="Content-Language" content="zh-cn">
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<meta name="GENERATOR" content="Microsoft FrontPage 4.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<title>CheckBox</title>
<script language=javascript defer>
var n=document.getElementsByTagName("INPUT");
var CheckBoxNum=n.length;
var SubNodeCheckSome,SameNodeCheckSome,tf,SearchNodeName,SearchParentNodeName,SameNodeNum,SubNodeCheckedNum,SameNodeCheckedNum,SubNodeNum,SubNodeCheckedTF;
function FindParentNode(SubNodeName) //获取上级结点名,并判断是否被选中
{
tf=false; //初始化选中状态
SearchNodeName=SubNodeName;
t=SubNodeName.lastIndexOf("_"); //判断是否存在上级结点
if(t!=-1)SearchNodeName=SubNodeName.substring(0,t); //如果存在上级结点,取得上级结点名
if(document.all(SubNodeName).checked)tf=true; //判断结点是否被选中
return SearchNodeName;
}
function CheckSubNode(NodeName) //获取结点名,并判断子结点是否选中
{
SubNodeCheckedTF=false; //初始化子结点选中状态
SubNodeNum=0; //初始化子结点数目
SameNodeNum=0; //初始化同级结点数目
SubNodeCheckedNum=0; //初始化子结点被选中的数目
SameNodeCheckedNum=0; //初始化同级结点被选中的数目
SubNodeCheckSome=0; //初始化子结点半选数目
SameNodeCheckSome=0; //初始化同级结点半选数目
ParentNodeName=FindParentNode(NodeName); //取得上级结点名
SearchParentNodeName=NodeName; //当前结点名
d=NodeName.lastIndexOf("_"); //判断是否存在上级结点
if(d!=-1)SearchParentNodeName=SearchParentNodeName.substring(0,d);//如果存在上级结点,取得上级结点名
for(i=0;i<CheckBoxNum;i++)
{
if(n[i].name.length==NodeName.length&&ParentNodeName==FindParentNode(n[i].name))
{
SameNodeNum+=1; //同级结点数目加一
if(n[i].checked)SameNodeCheckedNum+=1; //同级结点被选中的数目加一
if(n[i].indeterminate)SameNodeCheckSome+=1; //同级结点半选数目加一
}
if(n[i].name.substring(0,NodeName.length)==NodeName&&n[i].name!=NodeName&&n[i].type=="checkbox")
{
SubNodeNum+=1; //子结点数数目加一
if(n[i].checked)SubNodeCheckedNum+=1; //子结点被选中的数目加一
if(n[i].indeterminate)SubNodeCheckSome+=1; //子结点半选数目加一
}
}
if((SameNodeNum==1||SameNodeCheckedNum==0)&&(SubNodeCheckedNum==0)&&!document.all(NodeName).checked)
SubNodeCheckedTF=true; //判断子结点是否被选中
if((SameNodeNum>=0&&SameNodeCheckedNum<SameNodeNum)||SameNodeCheckSome>0||SubNodeCheckSome>0)
document.all(SearchParentNodeName).indeterminate=true;//将上级选中状态改为半选
if((SameNodeCheckedNum==SameNodeNum||SameNodeCheckedNum==0)&&SubNodeCheckSome==0&&SameNodeCheckSome==0)
document.all(SearchParentNodeName).indeterminate=false;//取消上级半选状态
return SearchParentNodeName;
}
function CheckAll(BoxName)
{
SearchNodeName=BoxName;
SearchParentNodeName=BoxName;
SubNodeLength=BoxName.split("_").length;
for(i=0;i<CheckBoxNum;i++)
{
if(n[i].name.substring(0,BoxName.length)==BoxName&&n[i].name!=BoxName&&n[i].type=="checkbox")
{
n[i].indeterminate=false; //取消半选状态
n[i].checked=document.all(BoxName).checked?true:false;//选中所有子结点
}
}
for(j=1;j<SubNodeLength;j++)
{
document.all(CheckSubNode(SearchParentNodeName)).checked=SubNodeCheckedTF?false:true;//如果有子结点被选中,则选中上级结点,返之取消
}
}
document.onclick=function(){if(event.srcElement.type=="checkbox")CheckAll(event.srcElement.name);}
</script></head>
<body >
<form name="f1" >
<input type="checkbox" name="bid"><br>
<input type="checkbox" name="bid_01"><br>
<input type="checkbox" name="bid_01_01"><br>
<input type="checkbox" name="bid_01_02"><br>
<input type="checkbox" name="bid_01_02_01"><br>
<input type="checkbox" name="bid_01_02_02"><br>
<input type="checkbox" name="bid_01_02_02_01"><br>
<input type="checkbox" name="bid_01_02_02_02"><br>
<input type="checkbox" name="bid_01_02_02_03"><br>
<input type="checkbox" name="bid_01_02_02_03_01"><br>
<input type="checkbox" name="bid_01_02_02_03_02"><br>
<input type="checkbox" name="bid_01_02_02_03_03"><br>
<input type="checkbox" name="bid_01_02_02_04"><br>
<input type="checkbox" name="bid_01_02_03"><br>
<input type="checkbox" name="bid_01_03"><br>
<input type="checkbox" name="bid_01_04"><br>
<input type="checkbox" name="bid_02"><br>
<input type="checkbox" name="bid_03"><br>
<input type="checkbox" name="bid_04"><br>
<hr>
<input type="checkbox" name="ent" checkmain ><br>
<input type="checkbox" name="ent_01"><br>
<input type="checkbox" name="ent_01_01"><br>
<input type="checkbox" name="ent_02"><br>
<input type="checkbox" name="ent_03"><br>
<input type="checkbox" name="ent_04"><br>
</form>
分享到:
相关推荐
除了常见的二态CheckBox外,PowerBuilder还支持三态CheckBox,其第三个状态是“不确定”或“部分选中”。这在某些情况下很有用,比如表示数据的完整性或一致性问题。 7. 集成到应用程序: 在PB 11.5项目中,你...
"TreeView实现三态"是指在TreeView控件中,节点不仅可以是常规的选中或未选中状态,还可以有第三种状态——部分选中(或者称为半选中)。这种三态模式在某些需求下特别有用,比如多选时允许用户选择一个组内的部分项...
在易语言中,三态选择框(TriState Checkbox)是一种用户界面控件,用于提供三种状态的选择,通常包括未选中、选中和不确定(灰色)三种状态。在编程中,三态选择框常用于表示用户对某个问题的不确定态度或第三种...
**jQuery三态树详解** jQuery三态树是一种利用jQuery库构建的数据展示组件,它以Json格式的数据作为输入,呈现为可交互的树形结构。这种树状结构具有三种状态:未选中、部分选中和全选,为用户提供了一种方便的方式...
2. **设置CheckBox样式**:为了显示三态复选框,我们需要覆盖`DrawNode`事件。在这个事件处理程序中,我们可以根据`TriStateState`属性来决定绘制复选框的状态。 ```vbnet Private Sub TreeView_DrawNode(sender As...
这里具体介绍下ToggleButton,它是三态按钮(就是有Indeterminate,Checked,Unchecked三种点击状态) 利用这个控件就可以很方便的实现以前需要写不少JavaScript代码实现的状态翻转的功能 Slider控件:Slider...
这里具体介绍下ToggleButton,它是三态按钮(就是有Indeterminate,Checked,Unchecked三种点击状态) 利用这个控件就可以很方便的实现以前需要写不少JavaScript代码实现的状态翻转的功能 Slider控件:Slider...
* 在Windows Forms程序中,某CheckBox对象初始化为三态(即:其ThreeState属性值为true),则应使用Checked属性来检查此CheckBox的状态。 * 要创建多文档应用程序,需要将窗体的IsMdiContainer属性设为true。 * MSIL...
- CheckBox:具有三种状态(选中、未选中、三态)的复选框控件,其ThreeState属性控制是否启用三态模式,Checked属性用于检查其状态。 - IsMdiContainer:设置窗体为MDI容器,可以包含多个子窗口。 4. Microsoft ...
(三) vb.net中的类、继承与多态性 1.vb.net中给一个类添加方法 2.命名属性、方法和事件 3.vb.net的事件和事件处理 4.类的继承(Inheritance) 5.vb.net继承的规则 6.用继承建立一个继承类 7.重载Windows控件 8....
(三) vb.net中的类、继承与多态性 1.vb.net中给一个类添加方法 2.命名属性、方法和事件 3.vb.net的事件和事件处理 4.类的继承(Inheritance) 5.vb.net继承的规则 6.用继承建立一个继承类 7.重载Windows控件 8....
- **面向对象编程**:类与对象的概念、继承、多态性等。 - **类型转换与命名规则**:理解C#中的类型转换机制,掌握命名规范。 #### 二、开发环境搭建:Visual Studio的使用 **标题描述**:“Ҫϲ鿴1Щϣ VS̳̣VS...
- `checkbox`:控制复选框的行为,如三态复选、全选/全不选等。 4. **数据源** - **JSON**:最常用的格式,可以包含子节点数据和额外信息。 - **HTML**:直接使用HTML结构来创建树,适用于静态内容。 - **Ajax*...
- 3 state radio buttons:创建三态单选按钮。 - ShiftCheckbox jQuery Plugin:优化多选操作。 - jQuery Checkbox (checkboxes with images):使用图像作为复选框。 - jQuery SpinButton Control:数字输入框,...
这只是一个基本的用法示例,实际上Bootstrap Switch提供了许多可配置选项,如颜色、大小、是否允许三态等,以及事件处理,允许开发者根据需求进行深入定制。 总的来说,Bootstrap Switch是一个强大的工具,可以提升...
- `checkbox`: 控制复选框的显示和行为,如三态模式、同级联动等。 - `plugins`: 添加额外的功能插件,如搜索、拖放、状态保存等。 - `themes`: 自定义主题样式,包括颜色、图标等。 ### 4. 数据源与异步加载 对于...
同时,通过设置`threeState`为`true`,我们可以启用三态复选框,即除了选中和未选中外,还有一种半选状态(部分子节点被选中)。然后,我们可以监听`checkchange`事件,这个事件会在复选框状态改变时触发。 以下是...
- **3 state radio buttons**:实现三态单选按钮。 - **ShiftCheckbox jQuery Plugin**:使用键盘快捷键选中/取消选中复选框。 - **Watermark Input**:在输入框内显示默认提示文本。 - **jQuery Checkbox ...