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

来源:国外服务器 在您之前已被浏览:1 次
导读:目前正在解读《js判断单选框checkbox是否选中(详解checkbox选中和不选中)》的相关信息,《js判断单选框checkbox是否选中(详解checkbox选中和不选中)》是由用户自行发布的知识型内容!下面请观看由(国外主机 - www.2bp.net)用户发布《js判断单选框checkbox是否选中(详解checkbox选中和不选中)》的详细说明。
国外云主机,www.2 bp .net

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

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

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

网页代码部分如下:

<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)})
国外云主机,www.2 bp .net
提醒:《js判断单选框checkbox是否选中(详解checkbox选中和不选中)》最后刷新时间 2023-03-27 02:22:04,本站为公益型个人网站,仅供个人学习和记录信息,不进行任何商业性质的盈利。如果内容、图片资源失效或内容涉及侵权,请反馈至,我们会及时处理。本站只保证内容的可读性,无法保证真实性,《js判断单选框checkbox是否选中(详解checkbox选中和不选中)》该内容的真实性请自行鉴别。