当前位置: 首页 > 图文教程 > 网络编程 > Javascript > (仅IE下有效)关于checkbox 三态

Javascript
编辑浪子版表单验证类
JavaScript脚本语言在网页中的简单应用
getElementById在任意一款浏览器中都可以用吗的疑问回复
“增强js程序代码的健壮性”之我见大量示例代码
javascript之卸载鼠标事件的代码
静态页面下用javascript操作ACCESS数据库(读增改删)的代码
javascript操作文本框readOnly
用javascript实现gb2312转utf-8的脚本
网站被黑的假象--ARP欺骗之页面中加入一段js
(JS实现)MapBar中坐标的加密和解密的脚本
几款极品的javascript压缩混淆工具
[原创]由亿起发(eqifa.com)的页面发现顶部的http://16a.us/8.js想到的js解密
JavaScript中的new的使用方法与注意事项
分别用两个函数实现的菜单
非常不错的模拟打字效果,目前仅支持纯文本、BR标签、和P标签
用javascript实现的支持lrc歌词的播放器
JS加ASP二级域名转向的代码
效果直逼flash的Div+Css+Js菜单
input之怎么清除默认值
用xhtml+css写的相册自适应 - 类似九宫格[兼容 ff ie6 ie7 opear ]

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


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-12   浏览: 204 ::
收藏到网摘: n/a

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可以表现的三种状态:

第一种和第三种很常见,而且它们是可以使用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>