javascript中CheckBox全选终极方案


Posted in Javascript onMay 20, 2015

在我们的程序开发中经常会要用到CheckBox的全选,通常情况下是在一些数据绑定控件中如Gridview等

下面以Repeater为例,在Repeater的header 和item中放入CheckBox控件 。

<asp:Repeater ID="rptGroup" runat="server"> 
  <HeaderTemplate> 
    <table width="100%" cellspacing="1" >
      <tr> 
        <td width="3%" align="center" >
         <input type="checkbox" id="chkAll" name="chkAll" value="checkbox" 
         onclick="checkAll  ('chkAll',this);" />             
        </td> 
      </tr> 
  </HeaderTemplate> 
  <ItemTemplate> 
    <tr> 
    <td align="center" >
     <input type="checkbox" name="chkSelect" value='<%# Eval("ID") %>' 
     onclick="checkAll('chkAll',this);"/>
    </td> 
    </tr> 
  </ItemTemplate> 
  <FooterTemplate> 
    </table> 
  </FooterTemplate> 
 </asp:Repeater>

下面就是js脚本了

checkAll方法是实现CheckBox的全选和取消全选的。

function checkAll(chkAllID, thisObj) {
  var chkAll = document.getElementById(chkAllID);
  var chks = document.getElementsByTagName("input");
  var chkNo = 0;
  var selectNo = 0;
  for (var i = 0; i < chks.length; i++) {
    if (chks[i].type == "checkbox") {
      //全选触发事件  
      if (chkAll == thisObj) {
        chks[i].checked = thisObj.checked;
      }
      //非全选触发 
      else {
        if (chks[i].checked && chks[i].id != chkAllID)
          selectNo++;
      }
      if (chks[i].id != chkAllID) {
        chkNo++;
      }
    }
  }
  if (chkAll != thisObj) {
    chkAll.checked = chkNo == selectNo;
  }
}

checkSelectNo 函数是用来获取 所有checkbox 选中的个数 这个在用来判断 是否有勾选时非常有用。

function checkSelectNo(chkAllID) {
  var chks = document.getElementsByTagName("input");
  var selectNo = 0;
  for (var i = 0; i < chks.length; i++) {
    if (chks[i].type == "checkbox") {
      if (chks[i].id != chkAllID && chks[i].checked) {
        selectNo++;
      }
    }
  }
  return selectNo;
}

以上所述就是本文的全部内容了,希望大家能够喜欢。

Javascript 相关文章推荐
关于jQuery中的end()使用方法
Jul 10 Javascript
javascript中BOM基础知识总结
Feb 14 Javascript
js实现时间轴自动排列效果
Mar 09 Javascript
关于webpack代码拆分的解析
Jul 20 Javascript
Three.js利用orbit controls插件(轨道控制)控制模型交互动作详解
Sep 25 Javascript
vuejs使用递归组件实现树形目录的方法
Sep 30 Javascript
使用原生js封装的ajax实例(兼容jsonp)
Oct 12 Javascript
JS设计模式之命令模式概念与用法分析
Feb 06 Javascript
layer弹出层倒计时关闭的实现方法
Sep 27 Javascript
vue 强制组件重新渲染(重置)的两种方案
Oct 29 Javascript
javascript canvas封装动态时钟
Sep 30 Javascript
使用Vue实现一个树组件的示例
Nov 06 Javascript
javascript消除window.close()的提示窗口
May 20 #Javascript
在JS方法中返回多个值的方法汇总
May 20 #Javascript
AspNet中使用JQuery上传插件Uploadify详解
May 20 #Javascript
AspNet中使用JQuery boxy插件的确认框
May 20 #Javascript
JQuery boxy插件在IE中边角图片不显示问题的解决
May 20 #Javascript
JS中的Replace方法使用经验分享
May 20 #Javascript
jquery使用经验小结
May 20 #Javascript
You might like
学习discuz php 引入文件的方法DISCUZ_ROOT
2009/06/21 PHP
学习使用curl采集curl使用方法
2012/01/11 PHP
PHP中::、-&amp;gt;、self、$this几种操作符的区别介绍
2013/04/24 PHP
php 字符串压缩方法比较示例
2014/01/23 PHP
php数组中包含中文的排序方法
2014/06/03 PHP
php写入数据到CSV文件的方法
2015/03/14 PHP
详解PHP的Laravel框架中Eloquent对象关系映射使用
2016/02/26 PHP
使用JavaScript创建新样式表和新样式规则
2016/06/14 PHP
JavaScript 学习笔记(十三)Dom创建表格
2010/01/21 Javascript
javascript setAttribute, getAttribute 在不同浏览器上的不同表现
2010/08/05 Javascript
自制轻量级仿jQuery.boxy对话框插件代码
2010/10/26 Javascript
Javascript基础教程之定义和调用函数
2015/01/18 Javascript
EasyUI 中combotree 默认不能选择父节点的实现方法
2016/11/07 Javascript
ES6字符串模板,剩余参数,默认参数功能与用法示例
2017/04/06 Javascript
微信小程序使用template标签实现五星评分功能
2018/11/03 Javascript
vue学习笔记之slot插槽用法实例分析
2020/02/29 Javascript
vue实现一个获取按键展示快捷键效果的Input组件
2021/01/13 Vue.js
Python基于twisted实现简单的web服务器
2014/09/29 Python
在Django的session中使用User对象的方法
2015/07/23 Python
python判断字符串是否是json格式方法分享
2017/11/07 Python
浅谈Python用QQ邮箱发送邮件时授权码的问题
2018/01/29 Python
python随机取list中的元素方法
2018/04/08 Python
pandas将numpy数组写入到csv的实例
2018/07/04 Python
python 3调用百度OCR API实现剪贴板文字识别
2018/09/04 Python
Python3实现的反转单链表算法示例
2019/03/08 Python
Python面向对象中类(class)的简单理解与用法分析
2020/02/21 Python
解决Keras的自定义lambda层去reshape张量时model保存出错问题
2020/07/01 Python
使用CSS3制作饼状旋转载入效果的实例
2015/06/23 HTML / CSS
PatPat阿根廷:妈妈们的购物平台
2019/05/30 全球购物
伊索寓言教学反思
2014/05/01 职场文书
平面设计师岗位职责
2014/09/18 职场文书
党的群众路线教育实践活动领导班子整改方案
2014/10/25 职场文书
2015年保送生自荐信
2015/03/24 职场文书
高一地理教学工作总结
2015/08/12 职场文书
Spring mvc是如何实现与数据库的前后端的连接操作的?
2021/06/30 Java/Android
MySQL系列之十三 MySQL的复制
2021/07/02 MySQL