在JS中使用layui复选框根据个人判断所拥有的权限

只要数据库中有个人所持有的权限关系,则根据个人id和权限的id关系,可以控制复选框的选中。以下为权限关系是表格形式的:

注意:在js写完代码,执行事件的时候,有时候会出现页面加载完后,第一次点击事件会生效,第二次以后点击事件就不生效的情况,这时候要把.attr("check",true)换成.prop("check",true)就可以了。

layui.use(['form'], function() {

var form = layui.form;
form.on('checkbox(selsLeft)', function(data) {
    if(data.elem.checked) {
    $(':checkbox[name="selsLeft"]').attr("checked", false);
    $(this).attr("checked", true);
    //清除第一次选择后的复选框选中状态
    $("input:checkbox[name='selsRight']").attr("checked", false);
    var id = $(this).val();
    showPosition(id);
    }else{
        $("input:checkbox[name='selsRight']").attr("checked", false);
    }
    layui.use(['form'], function() {
        var form = layui.form;
        form.render(); // 更新全部
    });
   });
});

function showPosition(idu){
    $.ajax({
        type:"post",
        url:basePath + '/aaa/bbb',
        async:false,
        data:{
            "id":idu,
        },
    success:function(data){
        var data = eval("(" + data + ")");
        for(var i=0;i<data.length;i++){
            var idp=data[i];
            $("input:checkbox[value="+idp+"][name='selsRight']").attr('checked','true');
           }
        }
    });

}

以下权限关系为树状形式的:


html中代码:

<div id="main" class="layui-form">
<div class="mainDivLeft layui-form" style="width: 39.9%;">
<table class="layui-table padings" lay-even="">
<thead>
<tr>
<th><input type="checkbox" id="selTot" lay-filter="sel" lay-skin="primary" /></th>
<th>序号</th>
<th>角色名</th>
<th>备注</th>
<th>更新时间</th>
</tr>
</thead>
<tbody id="view">
</tbody>
</table>
<table class="layui-table" id="pagesplit">
</table>
</div>
<div class="mainDivRight " style="width: 60%;">
<div class="layui-form">
<table id="treeMenu" class="layui-table">
</table>
</div>
</div>

js中代码如下;

$(function() {
layui.use(['form'], function() {
var form = layui.form;
form.on('checkbox(selsLeft)', function(data) {
if(data.elem.checked == true) {
//选择系统管理员的时候为单选
$(':checkbox[name="selLeft"]').attr("checked", false);
$(':checkbox[name="selLeft"]').removeClass("layui-form-checked");
$(this).prop("checked", true);
form.render();//渲染刷新
var id = $(this).val();
showPosition(id);
} else {
$("input:checkbox[name='box']").attr("checked", false);
form.render();
}
layui.use(['form', 'element'], function() {
var form = layui.form;
form.render();
});
});
});
function showPosition(idu) {
$.ajax({
type: "post",
url: basePath + '/aa/bb',     //在关系表中,根据个人id获得对应权限
async: false,
data: {
"id": idu,
"token": token
},
success: function(data) {
var data = eval("(" + data + ")");
console.log(data);//data为关于id的数组
//使用两个for循环,即循环DOM,又循环权限的数据
$("#treeMenu").find("tr").each(function(){
var a = $(this).closest("tr").attr("data-tt-id");
for(var i = 0; i < data.length; i++) {
var idp = data[i];

if(idp == a) {

$(this).find("input:checkbox[name='box']").attr('checked', 'true');
}
}
})
layui.use(['form', 'element'], function() {
var form = layui.form;
form.render();
});
}
});
}
})
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值