网页checkbox三态的实现

 以下代码直接可运行,仅支持IE,目前还没有找到firefox的解决办法,希望我会的解答一下
  1. <body onload=check()>
  2. <h3>三态的checkbox(变化顺序:未选中->灰色选中->白色选中)</h3><br>
  3. <form name=test>
  4. 根据onclick变化的checkbox:<br>
  5.  <input type=checkbox name=checkbox0 flag=0 onclick="gray(this)">初始化为未选中的checkbox<br>
  6.  </td><td><input type=checkbox name=checkbox1 flag=1 onclick="gray(this)">初始化为白色选中的checkbox<br>
  7.  </td><td><input type=checkbox name=checkbox2 flag=2 onclick="gray(this)">初始化为灰色选中的checkbox<br>
  8. 根据onpropertychange变化的checkbox:<br>
  9.  <input type=checkbox name=checkbox3 onpropertychange="gray2(this)">初始化为未选中的checkbox
  10. </form>
  11. </body>
  12. <script language=javascript>
  13. //用于onclick,需要一个自定义属性flag.
  14. function gray(c)
  15. {
  16.  switch(c.flag)
  17.  {
  18.   //当flag为0时,为未选中状态
  19.   case "0":c.checked=true;c.indeterminate=true;c.flag="2";break;
  20.   //当flag未1时,为白色选中状态
  21.   case "2":c.checked=true;c.indeterminate=false;c.flag="1";break;
  22.   //当flag为2时,为灰色选中状态
  23.   case "1":c.checked=false;c.indeterminate=false;c.flag="0";break;
  24.  }
  25. }
  26. //用于onpropertychange
  27. function gray2(c)
  28. {
  29.  cc.indeterminate=c.checked;
  30. }
  31. //用于body的onload,根据checkbox的flag属性判断checkbox的状态
  32. function check()
  33. {
  34.  for(var i = 0;i<document.test.elements.length;i++)
  35.  {
  36.   var ele = document.test.elements[i];
  37.   if(ele.flag!=null)
  38.   {
  39.    if(ele.flag=="0")
  40.    {
  41.     ele.checked = false;
  42.     ele.indeterminate = false;
  43.    }
  44.    if(ele.flag=="1")
  45.    {
  46.     ele.checked = true;
  47.     ele.indeterminate = false;
  48.    }
  49.    if(ele.flag=="2")
  50.    {
  51.     ele.checked = true;
  52.     ele.indeterminate = true;
  53.    }
  54.   }
  55.  }
  56. }
  57. </script>
主要注意 indeterminate 属性

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值