(仅IE下有效)关于checkbox 三态


Posted in Javascript onMay 12, 2007

From:http://www.cnblogs.com/birdshome/archive/2005/01/03/85679.html 
    我们在使用Windows XP的文件夹属性对话框时,会发现文件夹的Attributes分类里的Read-only和Hidden选项有时不是完全的checked或unchecked状态,而常常是一种虽然已被打勾但背景又是灰色的状态。其实这种不确定的CheckBox状态Web中也是可以表现的。  

    在Web页面中,我们可以使用<input id="chkb" type="CheckBox">来得到一个CheckBox控件。这个控件最常见的形式就是checked(被打上一个勾)或unchecked状态,我们可是使用鼠标点击来轻松的切换这两个状态,同时也可以使用脚本语言来改变它们的状态,比如使用JavaScript脚本: 
chkb.checked = true; 或 chkb.checked = false;
下图是CheckBox可以表现的三种状态:
   (仅IE下有效)关于checkbox 三态
第一种和第三种很常见,而且它们是可以使用HTML来设置的,就是说我们可以把CheckBox的初始状态通过一个叫checked的html元素的属性来确定。我们这里要说的Indeterminate状态虽然在IE4.0就开始支持了,可是却没有html元素属性来设置其值,而只能使用脚本来设置其Indeterminate状态。 

    比如使用JavaScript脚本(indeterminate默认是false): 

chkb.indeterminate = true; 或 chkb.indeterminate = false; 

    注意:CheckBox的indeterminate是一个独立的属性,和CheckBox的checked、status的取值无关,也就是说它只会影响CheckBox的外观显示,我们仍然可以正常的使用脚本读取checked和status的值。 
------------------------------------------------------------------------
From:http://www.itbody.com/doc/Html/WEB/105537297.html

<body> 
<h3>三态的checkbox(变化顺序:未选中->灰色选中->白色选中)</h3><br> 
<form name=test> 
根据onclick变化的checkbox:<br> 
 <input type=checkbox name=checkbox0 flag=0 onclick='gray(this)'>初始化为未选中的checkbox<br> 
 </td><td><input type=checkbox name=checkbox1 flag=1 onclick='gray(this)'>初始化为白色选中的checkbox<br> 
 </td><td><input type=checkbox name=checkbox2 flag=2 onclick='gray(this)'>初始化为灰色选中的checkbox<br> 
根据onpropertychange变化的checkbox:<br> 
 <input type=checkbox name=checkbox3 onpropertychange='gray2(this)'>初始化为未选中的checkbox 
</form> 
<script language=javascript> 
//用于onclick,需要一个自定义属性flag. 
function gray(c) 
{ 
 switch(c.flag) 
 { 
 //当flag为0时,为未选中状态 
 case '0':c.checked=true;c.indeterminate=true;c.flag='2';break; 
 //当flag未1时,为白色选中状态 
 case '2':c.checked=true;c.indeterminate=false;c.flag='1';break; 
 //当flag为2时,为灰色选中状态 
 case '1':c.checked=false;c.indeterminate=false;c.flag='0';break; 
 } 
} 
//用于onpropertychange 
function gray2(c) 
{ 
 c.indeterminate=c.checked; 
} 
//用于body的onload,根据checkbox的flag属性判断checkbox的状态 
function check() 
{ 
 for(var i = 0;i<document.test.elements.length;i++) 
 { 
 var ele = document.test.elements[i]; 
 if(ele.flag!=null) 
 { 
 if(ele.flag=='0') 
 { 
 ele.checked = false; 
 ele.indeterminate = false; 
 } 
 if(ele.flag=='1') 
 { 
 ele.checked = true; 
 ele.indeterminate = false; 
 } 
 if(ele.flag=='2') 
 { 
 ele.checked = true; 
 ele.indeterminate = true; 
 } 
 } 
 } 
} 
window.onload=check; 
</script>

Javascript 相关文章推荐
JavaScript 全角转半角部分
Oct 28 Javascript
input按钮的事件处理大全
Dec 10 Javascript
JavaScript对数字的判断与处理实例分析
Feb 02 Javascript
JavaScript中的事件委托及好处
Jul 12 Javascript
jQuery实现Select下拉列表进行状态选择功能
Mar 30 jQuery
jQuery ajax请求struts action实现异步刷新
Apr 19 jQuery
vue中使用vue-router切换页面时滚动条自动滚动到顶部的方法
Nov 28 Javascript
vue select二级联动第二级默认选中第一个option值的实例
Jan 10 Javascript
node.js调用C++函数的方法示例
Sep 21 Javascript
vscode下的vue文件格式化问题
Nov 28 Javascript
VUE实现图片验证码功能
Nov 18 Javascript
JS class语法糖的深入剖析
Jul 07 Javascript
弹出广告特效代码(一个IP只弹出一次)
May 11 #Javascript
模拟用户操作Input元素,不会触发相应事件
May 11 #Javascript
网上抓的一个特效
May 11 #Javascript
用javascript实现分割提取页面所需内容
May 09 #Javascript
javascript语句中的CDATA标签的意义
May 09 #Javascript
广告代码静态化js通用函数
May 09 #Javascript
用javascript实现自定义标签
May 08 #Javascript
You might like
PHP静态成员变量
2017/02/14 PHP
CodeIgniter框架数据库基本操作示例
2018/05/24 PHP
js获取url中指定参数值的示例代码
2013/12/14 Javascript
屏蔽IE弹出&quot;您查看的网页正在试图关闭窗口,是否关闭此窗口&quot;的方法
2013/12/31 Javascript
使用JavaScript开发IE浏览器本地插件实例
2015/02/18 Javascript
jQuery实现数秒后自动提交form的方法
2015/03/05 Javascript
JavaScript创建闭包的两种方式的优劣与区别分析
2015/06/22 Javascript
Javascript BOM学习小结(六)
2015/11/26 Javascript
ros::spin() 和 ros::spinOnce()函数的区别及详解
2016/10/01 Javascript
浅谈js中同名函数和同名变量的执行问题
2017/02/12 Javascript
Bootstrap table使用方法汇总
2017/11/17 Javascript
解析Vue 2.5的Diff算法
2017/11/28 Javascript
jquery.picsign图片标注组件实例详解
2018/02/02 jQuery
在vue中使用css modules替代scroped的方法
2018/03/10 Javascript
react native 获取地理位置的方法示例
2018/08/28 Javascript
vue-cli 3.0 版本与3.0以下版本在搭建项目时的区别详解
2018/12/11 Javascript
elementUI Tree 树形控件的官方使用文档
2019/04/25 Javascript
vue实现信息管理系统
2020/05/30 Javascript
用Python实现通过哈希算法检测图片重复的教程
2015/04/02 Python
Python 中开发pattern的string模板(template) 实例详解
2017/04/01 Python
Python返回数组/List长度的实例
2018/06/23 Python
Python wxPython库消息对话框MessageDialog用法示例
2018/09/03 Python
python 实现学生信息管理系统的示例
2020/11/28 Python
python爬虫用request库处理cookie的实例讲解
2021/02/20 Python
清除canvas画布内容(点擦除+线擦除)
2020/08/12 HTML / CSS
德国家具在线:Fashion For Home
2017/03/11 全球购物
MYSQL相比于其他数据库有哪些特点
2013/07/19 面试题
函授本科毕业生自我鉴定
2013/10/16 职场文书
投资合作协议书范本
2014/04/17 职场文书
春游踏青活动方案
2014/08/14 职场文书
运动员获奖感言
2014/08/15 职场文书
2016暑期社会实践心得体会范文
2016/01/14 职场文书
闭幕词的写作格式与范文!
2019/06/24 职场文书
爱心捐款倡议书:点燃希望,传递温暖
2019/11/04 职场文书
为什么RedisCluster设计成16384个槽
2021/09/25 Redis
el-table-column 内容不自动换行的解决方法
2022/08/14 Vue.js