jQuery 版的 CheckBox 复选框成组联动(JavaScript)

普通 JavaScript 版请参见:http://blog.csdn.net/Triumph/archive/2007/11/29/1907813.aspx

 

先来看效果:

复选框联动





两个复选框联动





其它对象联动








 

要使多个复选框成组,在写复选框的 HTML 代码时添加自定义属性 group ,如:
<input type="checkbox" group="groupname"/>
<input type="checkbox" group="groupname"/>
...

这样在页面显示时,group 名称相同的会成为一组。同样,在需要联动的对象的代码里添加自定义属性 forcheckboxgroup,名称为联动复选框组的 group 属性的值。当联动对象为复选框时,将控制全组的复选状态,当联动对象为其它元素时,复选框组将控制其 disabled 属性,规则是组内的复选框至少有一个选中时被联动的元素对象的 disabled 属性为 false,否则为 true。如:
<input type="checkbox" forcheckboxgroup="groupname"/>
<input type="button" value="按钮" forcheckboxgroup="groupname"/>
...

 

 

将下面的代码另存或粘贴到页面中(记得引用 jQuery ):

  1. $(function(){
  2.     //将所有与组关联的非复选框的元素设为无效
  3.     $("[forcheckboxgroup]:not(:checkbox)").attr("disabled",true);
  4.     
  5.     $(":checkbox[forcheckboxgroup]")    //选择所有可以控制复选框组状态的复选框
  6.         .click(function(){  // 绑定 click 事件
  7.         
  8.             //点击此复选框后只做以下三件事:
  9.         
  10.             // 1. 设置所控制的复选框组内所有复选框的状态
  11.             $(":checkbox[group='" + this.getAttribute('forcheckboxgroup') + "']").attr("checked",this.checked);
  12.             
  13.             // 2. 设置与自己具有相同功能的复选框的状态
  14.             $(":checkbox[forcheckboxgroup='" + this.getAttribute('forcheckboxgroup') + "']").attr("checked",this.checked).attr("indeterminate",false);
  15.             
  16.             // 3. 设置所有与该复选框组相关联的元素的状态
  17.             $("[forcheckboxgroup='" + this.getAttribute('forcheckboxgroup') + "']:not(:checkbox)").attr("disabled",!this.checked);
  18.         });
  19.     
  20.     $(":checkbox[group]")   //选择所有成组的复选框
  21.         .click(function(){  //绑定 click 事件
  22.         
  23.             var blnStat = this.checked; //复选框状态
  24.             
  25.             var blnEqual = true;    //该组成员状态是否相同
  26.             
  27.             $(":checkbox[group='" + this.getAttribute('group') + "']")  //选择该组成员
  28.                 .each(function(){   
  29.                     blnEqual = blnStat == this.checked;
  30.                     return blnEqual ;   //有不同状态时停止
  31.                 });
  32.             
  33.             //设置所有与组关联的非复选框的元素状态
  34.             $("[forcheckboxgroup='" + this.getAttribute('group') + "']:not(:checkbox)").attr("disabled",!(blnStat||!blnEqual));
  35.             
  36.             //设置所有可控制该组状态的复选框的状态
  37.             $(":checkbox[forcheckboxgroup='" + this.getAttribute('group') + "']").attr("checked",blnStat).attr("indeterminate",!blnEqual);
  38.         });
  39. });
<script src="http://code.jquery.com/jquery-latest.min.js" type=text/javascript></script> <script type=text/javascript>$(function(){$("[forcheckboxgroup]:not(:checkbox)").attr("disabled",true);$(":checkbox[forcheckboxgroup]").click(function(){$(":checkbox[group='" + this.getAttribute('forcheckboxgroup') + "']").attr("checked",this.checked);$(":checkbox[forcheckboxgroup='" + this.getAttribute('forcheckboxgroup') + "']").attr("checked",this.checked).attr("indeterminate",false);$("[forcheckboxgroup='" + this.getAttribute('forcheckboxgroup') + "']:not(:checkbox)").attr("disabled",!this.checked);});$(":checkbox[group]").click(function(){var blnStat = this.checked;var blnEqual = true;$(":checkbox[group='" + this.getAttribute('group') + "']").each(function(){ blnEqual = blnStat == this.checked;return blnEqual;});$("[forcheckboxgroup='" + this.getAttribute('group') + "']:not(:checkbox)").attr("disabled",!(blnStat||!blnEqual));$(":checkbox[forcheckboxgroup='" + this.getAttribute('group') + "']").attr("checked",blnStat).attr("indeterminate",!blnEqual);});});</script>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值