当前位置:首页 > 生活百科

js判断单选框checkbox是否选中(详解checkbox选中和不选中)

栏目:生活百科日期:2025-04-12浏览:0

多选框全选与全不选的实现

多选框全选与全不选是前端开发人员必学的案例了,这里完成了以下需求:

当用户勾上“全选”时,自动选中所有语言,并把“全选”变成“全不选”;当用户去掉“全不选”时,自动不选中所有语言;当用户点击“反选”时,自动把所有语言状态反转(选中的变为未选,未选的变为选中);当用户把所有语言都手动勾上时,“全选”被自动勾上,并变为“全不选”;当用户手动去掉选中至少一种语言时,“全不选”自动被去掉选中,并变为“全选”。

网页代码部分如下:

&<form id="test-form" action="test"&>  &<legend&>请选择想要学习的编程语言:&</legend&>  &<fieldset&>    &<p&>      &<label class="selectAll"&>        &<input type="checkbox"&>        &<span class="selectAll"&>全选&</span&>        &<span class="deselectAll"&>全不选&</span&>      &</label&>      &<a href="#0" class="invertSelect"&>反选&</a&>&</p&>    &<p&>&<label&>&<input type="checkbox" name="lang" value="javascript"&> JavaScript&</label&>&</p&>    &<p&>&<label&>&<input type="checkbox" name="lang" value="python"&> Python&</label&>&</p&>    &<p&>&<label&>&<input type="checkbox" name="lang" value="ruby"&> Ruby&</label&>&</p&>    &<p&>&<label&>&<input type="checkbox" name="lang" value="haskell"&> Haskell&</label&>&</p&>    &<p&>&<label&>&<input type="checkbox" name="lang" value="scheme"&> Scheme&</label&>&</p&>    &<p&>      &<button type="submit"&>Submit&</button&>    &</p&>  &</fieldset&>&</form&>

先获取dom元素

var    form = $('#test-form'),    langs = form.find('&[name=lang]'),    selectAll = form.find('label.selectAll :checkbox'),    selectAllLabel = form.find('label.selectAll span.selectAll'),    deselectAllLabel = form.find('label.selectAll span.deselectAll'),    invertSelect = form.find('a.invertSelect');

全选与全不选实现起来很简单,利用jquery对象的prop方法来设置选中状态,需要注意的是这里不能使用attr()方法:

 // 全选与全不选    selectAll.on("change",()=&>{      if(selectAll.prop("checked")) {        //全选        langs.prop("checked",true)        selectAllLabel.hide()        deselectAllLabel.show()       }else{        // 全不选        langs.prop("checked",false)        selectAllLabel.show()        deselectAllLabel.hide()       }           })

反选的方法也很简单:

        invertSelect.on("click",()=&>{      //jquery对象要先使用Array.from方法转换成数组,利用数组来遍历      //需要注意的是,遍历的每一个元素是dom对象,而不是jquery对象了,      //不能再使用prop方法了      Array.from(langs).forEach(item=&>item.checked=!item.checked)     })

当用户把所有语言都手动勾上时,“全选”被自动勾上,并变为“全不选”。实现这个需求,需要让change事件绑定所有的name为lang的checkbox对象(langs),事件触发时,要遍历所有的langs,如果全部为选中状态,则“全选”自动勾上,并变为“全不选”。这里获取所有的选中状态的checkbox,可以使用 $(&‘[name=lang]:checked&’),代码如下:

  var langsChecked = $('&[name=lang]:checked')   //如果选中的checkbox数量大于等于5,即是全部选中  if(langsChecked.length&>=5){     //全选打勾    selectAll.prop("checked",true)    //全选标签隐藏    selectAllLabel.hide()    //全不选标签显示    deselectAllLabel.show()   }else{    //全选去掉勾    selectAll.prop("checked",false)    //全选标签显示    selectAllLabel.show()    //全不选标签隐藏    deselectAllLabel.hide()   }

为避免与之前的代码显示冲突,这里封装为一个方法,前面的代码也需要使用该方法,完整代码如下:

 $(function(){  var    form = $('#test-form'),    langs = form.find('&[name=lang]'),    selectAll = form.find('label.selectAll :checkbox'),    selectAllLabel = form.find('label.selectAll span.selectAll'),    deselectAllLabel = form.find('label.selectAll span.deselectAll'),    invertSelect = form.find('a.invertSelect');    // 全选与全不选    selectAll.on("change",()=&>{      if(selectAll.prop("checked")) {        //全选        langs.prop("checked",true)        selectAllLabel.hide()        deselectAllLabel.show()       }else{        // 全不选        langs.prop("checked",false)        selectAllLabel.show()        deselectAllLabel.hide()       }      select()     })    //反选    invertSelect.on("click",()=&>{      //jquery对象要先使用Array.from方法转换成数组,利用数组来遍历      //需要注意的是,遍历的每一个元素是dom对象,而不是jquery对象了,      //不能再使用prop方法了      Array.from(langs).forEach(item=&>item.checked=!item.checked)      select()     })    //当用户把所有语言都手动勾上时,“全选”被自动勾上,并变为“全不选”;        //当用户手动去掉选中至少一种语言时,“全不选”自动被去掉选中,并变为“全选”。    function select(){      var langsChecked = $('&[name=lang]:checked')      console.log(langsChecked)      //如果选中的checkbox数量大于等于5,即是全部选中      if(langsChecked.length&>=5){        selectAll.prop("checked",true)        selectAllLabel.hide()        deselectAllLabel.show()       }else{        selectAll.prop("checked",false)        selectAllLabel.show()        deselectAllLabel.hide()       }     }    langs.change(select)})

“js判断单选框checkbox是否选中(详解checkbox选中和不选中)” 的相关文章

u盘检测软件哪个最好(u盘检测工具排行榜)

网盘时代改变着我对数据资料的储存习惯,但也因下载速度慢和各种推送广告,让很多人感到反感。在网速不断提升的同时,为啥网盘传输文件时依旧很慢呢?这就不得不提到收费的...

lol软件辅助推荐(永久免费脚本辅助工具)

在英雄联盟s11赛季里,辅助ap老鼠是一个下路黑科技玩法,利用被动可以用月石恢复大量血量,那么英雄联盟11.12辅助ap老鼠怎么玩呢,接下来为大家带来英雄联盟1...

为什么无线蓝牙耳机连上没声音(蓝牙耳机故障及应对方法

随着越来越多手机取消耳机孔,蓝牙耳机的运用也是越来广泛。并且其使用功能也不再单一。那么也意味着,功能的增加,问题也必然增多。今天小编汇总了一些蓝牙耳机经常会碰到...

hp1005mfp打印机驱动怎么安装(打印机安装步骤详解)

打印机在办公领域运用的非常多,在诸多品牌的打印机中,惠普打印机是比较知名的牌子,有很多人选择购买,惠普打印机怎么安装?许多人的打印机买回来之后不知道怎么样安装,...

2020最新智能锁测评(8款市面主流智能锁排行)

“智能门锁的水很深”,这是此次横评过程中我最深的感受,无论是叱咤“锁场”的老牌厂商(凯迪仕、玥玛门锁、金点原子&&#8230;),还是引领时代浪潮的互联网科技公...

一键装机精灵怎么用(Win10还原精灵的使用方法)

想省钱装机呐!还想多省点呐!就玩玩一般游戏呐,噢,主要是上网课呐,别装勒,你妈又不在,跟我还装啥幺蛾子呐!谁不知道谁!学习一场戏,你方唱罢我登场呗,万一演砸混合...

如何制定品牌推广计划,一份完整的品牌策划书分享

制定符合企业的推广方案就需要去认真了解企业文化的内涵与产品的特征,企业有哪些优势,有哪些劣势,与其他同行业竞争对手对比,通常我们取长补短,可以做出适当相关的调整...

excel表格颜色搭配技巧(excel高级配色方案)

在适当的范围内运用色彩,简单而明确地标示出需要强调的重点。可以使Excel表格更加容易一目了然。本节介绍三种具体的方法,分别是设计数字的颜色、背景的颜色和隐藏框...

儿童眼部按摩仪哪个牌子好(最值入手的儿童眼部按摩仪品

年后的那场疫情令广大学子们的学习从课堂变成了线上学习。文化知识学到了,但是不少家长反映孩子因为较长时间面对手机、平板等电子设备,对眼睛的影响也是挺大的。我家女儿...

如何查询商标是否能注册,注册商标查询官网

商标注册能否成功,取决于很多因素,若是其中一点没有达标,商标就可能面临不予注册的风险。那么怎么判断自己的商标是否可以注册呢,下面企帮帮小编就来给您讲讲吧。1、在...