多选框全选与全不选是前端开发人员必学的案例了,这里完成了以下需求:
当用户勾上“全选”时,自动选中所有语言,并把“全选”变成“全不选”;当用户去掉“全不选”时,自动不选中所有语言;当用户点击“反选”时,自动把所有语言状态反转(选中的变为未选,未选的变为选中);当用户把所有语言都手动勾上时,“全选”被自动勾上,并变为“全不选唐山理工学院”;当用户手动去掉选中至少一种语言时,“全不选”自动被去掉选中,并变为“全选”。网页代码部分如下:
<form id="test-form" action="test"> <legend>请选择想要学习的编程语言:</legend> <fieldt> <p> <label class="lectall"> <input type="checkbox"> <span class="lectall">全选</span> <span class="delectall">全不选</span> </label> <a href="#0" class="invertlect">反选</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> </fieldt></form>
先获取dom元素
var form = $('#test-form'), langs = form.find('[name=lang]'), lectall = form.find('label.lectall :checkbox'), lectalllabel = form.find('label.lectall span.lectall'), delectalllabel = form.find('label.lectall span.delectall'), invertlect = form.find('a.invertlect');
全选与全不选实现起来很简单,利用jquery对象的prop方法来设置选中状态,需要注意的是这里不能使用attr()方法:
// 全选与全不选 lectall.on("change",()=>{ if(lectall.prop("checked")) { //全选 langs.prop("checked",true) lectalllabel.hide() delectalllabel.show() }el{ // 全不选 langs.prop("checked",fal) lectalllabel.show() delectalllabel.hide() } })
反选的方法也很简单:
invertlect.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){ //全选打勾 lectall.prop("check让人心寒的句子ed",true) //全选标签隐藏 lectalllabel.hide() //全不选标签显示 delectalllabel.show() }el{ //全选去掉勾 lectall.prop("checked",fal) //全选标签显示 lectalllabel.show() //全不选标签隐藏 delectalllabel.hide() }
为避免与之前的代码显示冲突,这里封装为一个方法,前面的代码也需要使用该方法,完整代码如下:
$(function(){ var form = $('#test-form'), langs = form.find('[name=lang]'), lectall = form.find('label.lectall :checkbox'), lectalllabel = form.find('label.lectall span.lectall'), delectalllabel = form.find('label.lectall span.delectall'), invertlect = form.find('a.invertlect'); // 全选与全不选 lectall.on("change",()=>{ if(lectall.prop("checked")) { //全选 langs.prop("checked",true) lectalllabel.hide() delectalllabel.show() }el{ // 全不选 langs.prop("checked",fal) lectalllabel.show() delectalllabel.hide() } lect() }) //反选 invertlect.on("click",()=>{ //jquery对象要先使用array.from方法转换成数组,利用数组来遍历 //需要注意的是,遍历的每一个元素是dom校园搞笑小品对象,而不是jquery对象了, //不能再使用prop方法了 array.from(langs).foreach(item=>item.checked=!item.checked) lect() }) //当用户把所有语言都手动勾上时,“全选”被自动勾上,并变为“全不选”; //当用户手动去掉选中至少一种语言时,“全不选”自动被去掉选中,并变为“全选”。 function lect(){ var langschecked = $('[name=lang]:checked') console.log(langschecked) //如果选中的checkbox数量大于等于5,即是全部选中 if(langschecked.length>=5){ lectall.prop("checked",true) lectalllabel.hide() delectalllabel.show() }el{ lectall.prop("checked",fal) lectalllabel.show() delectalllabel.hide() } } langs.change(lect)})
本文发布于:2023-04-05 10:04:48,感谢您对本站的认可!
本文链接:https://www.wtabcd.cn/fanwen/zuowen/ab1cc53861c93c45bbbb8a1448e2bb6e.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文word下载地址:js判断单选框checkbox是否选中(详解checkbox选中和不选中).doc
本文 PDF 下载地址:js判断单选框checkbox是否选中(详解checkbox选中和不选中).pdf
留言与评论(共有 0 条评论) |