【layui 】 checkbox实现全选、反全选效果

4 篇文章 0 订阅
2 篇文章 0 订阅

首先使用layui checkBox或任意表单需要必备的代码有

  1. 引入
 <link rel="stylesheet" href="/lib/css/layui.css">  //引入css
 <script src="/lib/layui.js"></script>       //引入js

2.html

                <div class="messageTitle">系统通知</div>
                <form class="layui-form" action="">
                    <div class="messageTool">
                        <div class="layui-input-block">
                            <input type="checkbox" name="all" title="全部"  lay-skin="primary" value="all" lay-filter="chooseAll" id="chooseAllMessage">
                        </div>
                        <button class="btn" onclick="readAll()" type="button">标为已读</button><button class="btn"
                            onclick="delMessage()" type="button">删除所选</button>
                        <div class="right">
                            未读<span id="noSeeMessage">0</span>/全部<span id="allMessage">0</span>
                        </div>
                    </div>
                    <div class="messageBody">
                			<div class="layui-input-block">
                   				 <input type="checkbox" name="states" title=""  lay-skin="primary" value="${$value.id}" lay-filter="chooseStates">
                			</div>
                			<div class="layui-input-block">
                   				 <input type="checkbox" name="states" title=""  lay-skin="primary" value="${$value.id}" lay-filter="chooseStates">
                			</div>
                			<div class="layui-input-block">
                   				 <input type="checkbox" name="states" title=""  lay-skin="primary" value="${$value.id}" lay-filter="chooseStates">
                			</div>
                			<div class="layui-input-block">
                   				 <input type="checkbox" name="states" title=""  lay-skin="primary" value="${$value.id}" lay-filter="chooseStates">
                			</div>
                			<div class="layui-input-block">
                   				 <input type="checkbox" name="states" title=""  lay-skin="primary" value="${$value.id}" lay-filter="chooseStates">
                			</div>
                			<div class="layui-input-block">
                   				 <input type="checkbox" name="states" title=""  lay-skin="primary" value="${$value.id}" lay-filter="chooseStates">
                			</div>
                			<div class="layui-input-block">
                   				 <input type="checkbox" name="states" title=""  lay-skin="primary" value="${$value.id}" lay-filter="chooseStates">
                			</div>
                			<div class="layui-input-block">
                   				 <input type="checkbox" name="states" title=""  lay-skin="primary" value="${$value.id}" lay-filter="chooseStates">
                			</div>
                    </div>
                </form>

3.js

function setCheckBox() {
	checkedStatesList = [];
	layui.use(['form'], function () {
		var form = layui.form,    //必须调用,不然连样式都没有
		statesList = $('input[name=states]'), statesLen = statesList.length;
		form.render();
		form.on('checkbox(chooseAll)', function (data) { //监听全选 
			if (data.elem.checked) {   //全选
				checkedStatesList = [];
				statesList.each(function () {
					this.checked = true;
				})
			} else {         //全不选
				checkedStatesList = [];
				statesList.each(function () {
					this.checked = false;
				})
			}
			form.render();
		});
		form.on('checkbox(chooseStates)', function (data) {
			checkedStatesList = [];
			if (!data.elem.checked) {   //当前的checkbox 未选中,默认就是没有全选
				$('#chooseAllMessage').prop("checked", false);
				form.render('checkbox');
			} else {   //当前选中,
				statesList.each(function () {
					if (this.checked) { 
						statesLen-- ;  //记录的为未选中的个数,若为0即全选
					}
				})
				if (statesLen == 0){
					$("#chooseAllMessage").prop("checked", true);
				}	
				form.render('checkbox');
			}
		})
	})
}
layui 中,如果要实现多个 checkbox全选/取消全选功能,可以使用 `form` 模块的 `on` 方法,绑定 `checkbox` 的点击事件,然后通过 `prop` 方法修改其他 checkbox 的选择状态。 示例代码如下: HTML: ```html <div class="layui-form-item"> <input type="checkbox" name="checkAll" lay-skin="primary" title="全选"> <div class="layui-input-block"> <input type="checkbox" name="like[1]" lay-skin="primary" title="复选框1"> <input type="checkbox" name="like[2]" lay-skin="primary" title="复选框2"> <input type="checkbox" name="like[3]" lay-skin="primary" title="复选框3"> </div> </div> ``` JavaScript: ```javascript //监听全选 form.on('checkbox(checkAll)', function(data){ var child = $(data.elem).parents('.layui-form').find('input[type="checkbox"]'); child.each(function(index, item){ item.checked = data.elem.checked; }); form.render('checkbox'); }); //监听每个复选框 form.on('checkbox', function(data){ var child = $(data.elem).parents('.layui-form').find('input[type="checkbox"]'); var checkedChild = $(data.elem).parents('.layui-form').find('input[type="checkbox"]:checked'); if (checkedChild.length === child.length) { $(data.elem).parents('.layui-form').find('input[name="checkAll"]').prop('checked', true); } else { $(data.elem).parents('.layui-form').find('input[name="checkAll"]').prop('checked', false); } form.render('checkbox'); }); ``` 以上代码中,监听了全选复选框和每个子复选框的点击事件,通过 `prop` 方法修改其他 checkbox 的选择状态,最后通过 `form.render('checkbox')` 方法重新渲染 checkbox,使其生效。 希望能对你有所帮助!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值