(仅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 相关文章推荐
JQuery从头学起第二讲
Jul 04 Javascript
JS过滤url参数特殊字符的实现方法
Dec 24 Javascript
使用js操作css实现js改变背景图片示例
Mar 10 Javascript
原生javascript实现隔行换色
Jan 04 Javascript
JavaScript引用类型和基本类型详解
Jan 06 Javascript
javascript中的 object 和 function小结
Aug 14 Javascript
Vue.js快速入门实例教程
Oct 15 Javascript
js实现数字递增特效【仿支付宝我的财富】
May 05 Javascript
详解axios中封装使用、拦截特定请求、判断所有请求加载完毕)
Apr 09 Javascript
用Vue.js方法创建模板并使用多个模板合成
Jun 28 Javascript
基于Vue+ElementUI的省市区地址选择通用组件
Nov 20 Javascript
Node.js API详解之 dgram模块用法实例分析
Jun 05 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下几种删除目录的方法总结
2007/08/19 PHP
php入门学习知识点七 PHP函数的基本应用
2011/07/14 PHP
浅析PHP中strlen和mb_strlen的区别
2014/08/31 PHP
PHP+JQuery+Ajax实现分页方法详解
2016/08/06 PHP
PHP页面跳转实现延时跳转的方法
2016/12/10 PHP
PHP空值检测函数与方法汇总
2017/11/19 PHP
JSON 学习之JSON in JavaScript详细使用说明
2010/02/23 Javascript
读jQuery之十四 (触发事件核心方法)
2011/08/23 Javascript
JS中Iframe之间传值的方法
2013/03/11 Javascript
js实现俄罗斯方块小游戏分享
2014/01/31 Javascript
jQuery实现行文字链接提示效果的方法
2015/03/10 Javascript
AngularJs bootstrap搭载前台框架——基础页面
2016/09/01 Javascript
玩转NODE.JS(四)-搭建简单的聊天室的代码
2016/11/11 Javascript
vue.js给动态绑定的radio列表做批量编辑的方法
2018/02/28 Javascript
使用JS获取页面上的所有标签
2018/10/18 Javascript
M2实现Nodejs项目自动部署的方法步骤
2019/05/05 NodeJs
JS函数进阶之继承用法实例分析
2020/01/15 Javascript
解决await在forEach中不起作用的问题
2021/02/25 Javascript
[03:55]显微镜下的DOTA2特别篇——430灰烬之灵神级操作
2014/06/24 DOTA
[06:24]DOTA2亚洲邀请赛小组赛第三日 TOP10精彩集锦
2015/02/01 DOTA
[44:50]2018DOTA2亚洲邀请赛 4.1 小组赛 A组 TNC vs VG
2018/04/02 DOTA
使用python3+xlrd解析Excel的实例
2018/05/04 Python
如何利用Python模拟GitHub登录详解
2019/07/15 Python
python 三种方法实现对Excel表格的读写
2020/11/19 Python
世界上最大的罕见唱片、CD和音乐纪念品网上商店:991.com
2018/05/03 全球购物
日本著名的服饰鞋帽综合类购物网站:MAGASEEK
2019/01/09 全球购物
给校长的建议书400字
2014/05/15 职场文书
优秀党支部书记事迹材料
2014/05/29 职场文书
WordPress多语言翻译插件 - WPML使用教程
2021/04/01 PHP
Python如何把不同类型数据的json序列化
2021/04/30 Python
MySQL主从搭建(多主一从)的实现思路与步骤
2021/05/13 MySQL
Python中可变和不可变对象的深入讲解
2021/08/02 Python
Android自定义scrollview实现回弹效果
2022/04/01 Java/Android
Nginx流量拷贝ngx_http_mirror_module模块使用方法详解
2022/04/07 Servers
python和Appium的移动端多设备自动化测试框架
2022/04/26 Python
Win10此设备不支持接收Miracast无法投影的解决方法
2022/07/07 数码科技