Layui checkbox 全選/反選/取消全選(十一行代碼實現)

話不多說,先展示效果圖,如果看官覺得合適,接下來還有源碼和實現詳解等着您

一、效果圖

 二、實現詳解

HTML

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>角色添加</title>
		<meta name="renderer" content="webkit">
		<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
		<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
		<meta name="apple-mobile-web-app-status-bar-style" content="black">
		<meta name="apple-mobile-web-app-capable" content="yes">
		<meta name="format-detection" content="telephone=no">
		<link rel="stylesheet" href="../../layui/css/layui.css" media="all" />
		<link rel="stylesheet" href="../../css/public.css" media="all" />
	</head>
	<body class="childrenBody">
		<form class="layui-form" style="width:80%;">
			<div class="layui-form-item layui-row layui-col-xs12">
				<label class="layui-form-label">角色名稱:</label>
				<div class="layui-input-block">
					<input type="text" class="layui-input rolename" lay-verify="required" placeholder="請輸入角色名稱">
				</div>
			</div>
			<div class="layui-form-item layui-row layui-col-xs12">
				<label class="layui-form-label">角色描述:</label>
				<div class="layui-input-block">
					<input type="text" class="layui-input description" lay-verify="number" placeholder="請輸入角色描述">
				</div>
			</div>
			<!-- 權限配置部分-->
			<div class="layui-form-item layui-row ">
				<div class="layui-col-xs12"><label class="layui-form-label">權限配置</label></div>
				<div class="layui-col-xs12">
					<table class="layui-table">
						<tr>
							<th class="layui-bg-gray"><input type="checkbox"  name="check_all" title="首頁權限" lay-skin="primary" lay-filter="check_all"/></th>
							<td>
								<div class="layui-row">
									<div class="layui-col-xs3 ">
										<input type="checkbox" class="authority" name="authority" title="首頁新增" lay-skin="primary" lay-filter="authority"/>
									</div>
									<div class="layui-col-xs3 ">
										<input type="checkbox" class="authority" name="authority" title="首頁編輯" lay-skin="primary" lay-filter="authority"/>
									</div>
									<div class="layui-col-xs3 ">
										<input type="checkbox" class="authority" name="authority" title="首頁查看" lay-skin="primary" lay-filter="authority" />
									</div>
									<div class="layui-col-xs3 ">
										<input type="checkbox" class="authority" name="authority" title="首頁刪除" lay-skin="primary" lay-filter="authority"/>
									</div>
								</div>
							</td>
						</tr>
						<tr>
							<th class="layui-bg-gray"><input type="checkbox"   name="check_all" title="資產管理" lay-skin="primary" lay-filter="check_all"/></th>
							<td>
								<div class="layui-row">
									<div class="layui-col-xs3 ">
										<input type="checkbox" class="authority"  name="authority" title="資產查看" lay-skin="primary" lay-filter="authority"/>
									</div>
									<div class="layui-col-xs3 ">
										<input type="checkbox" class="authority" title="資產編輯" lay-skin="primary" lay-filter="authority" />
									</div>
									<div class="layui-col-xs3 ">
										<input type="checkbox" class="authority" title="資產查看" lay-skin="primary" lay-filter="authority" />
									</div>
									<div class="layui-col-xs3 ">
										<input type="checkbox" class="authority" title="資產刪除" lay-skin="primary" lay-filter="authority"/>
									</div>
									<div class="layui-col-xs3 ">
										<input type="checkbox" class="authority" title="分組查看" lay-skin="primary" lay-filter="authority"/>
									</div>
									<div class="layui-col-xs3 ">
										<input type="checkbox" class="authority" title="分組編輯" lay-skin="primary" lay-filter="authority"/>
									</div>
									<div class="layui-col-xs3 ">
										<input type="checkbox" class="authority" title="分組查看" lay-skin="primary" lay-filter="authority" />
									</div>
									<div class="layui-col-xs3 ">
										<input type="checkbox" class="authority" title="分組刪除" lay-skin="primary" lay-filter="authority"/>
									</div>
								</div>
							</td>
						</tr>
					</table>
				</div>
			</div>
			<!-- 表單提交部分-->
			<div class="layui-form-item layui-row layui-col-xs12">
				<div class="layui-input-block">
					<button class="layui-btn layui-btn-sm" lay-submit="" lay-filter="addUser">立即添加</button>
					<button type="reset" class="layui-btn layui-btn-sm layui-btn-primary">取消</button>
				</div>
			</div>
		</form>
		<script type="text/javascript" src="../../layui/layui.js"></script>
		<script type="text/javascript" src="../../js/user/roleAdd.js"></script>	
		<script type="text/javascript" src="../../js/jquery-3.2.1.min.js"></script>
		<script >
	
		</script>
	</body>
</html>

roleAdd.js

layui.use(['form','layer'],function(){
    var form = layui.form
        layer = parent.layer === undefined ? layui.layer : top.layer,
        $ = layui.$;
	
		form.render();
		// 實現 全選 反選
		form.on('checkbox(check_all)',function(data){
			$(this).parent().siblings("td").find("input").prop("checked",this.checked);
			form.render('checkbox');
		});
		/**
		 * 以下代碼實現:
		 * 1 當子項全部選中時,全選被選中
		 * 2 當子項未全部選中時,全選不選中
		 */
		form.on('checkbox(authority)',function(data){
			if(this.checked){//當子項全部選中時,全選被選中
				if($(this).parent().siblings("div").children().filter(".authority").not("input:checked").length === 0){
					$(this).parent().parent().parent().siblings("th").children('input').prop("checked",true);
					form.render('checkbox');
				}
			} else { // 子項未選中 全選不選中
				$(this).parent().parent().parent().siblings("th").children('input').prop("checked",false);
				form.render('checkbox');
			}
		})
		
})

三、方法詳解

全選\反選實現:

點擊“首頁權限”、“資產權限”實現當前row所有checkbox全選或反選

 

子項單個選中 全選不選中:

子項全選,全選選中

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章