javascript - 自动选中与数据库中该 ID 相关的复选框

标签 javascript php jquery ajax codeigniter

目前,我正在使用 Codeigniter 开展项目,面临一个我无法解决的挑战。

View 如下:

enter image description here

如上图所示,有多个 Angular 色和权限可用。每个 Angular 色都有不同的权限存储在数据库中。此外,用户一次可以拥有多个 Angular 色。

目前,我可以选择用户的多个 Angular 色和权限,并且可以成功添加到数据库中。但问题是每个 Angular 色都已经将其权限存储在数据库中。所以,我想让它更加用户友好和明智,当我检查任何 User Role 复选框然后使用 Jquery/Javascript 它应该自动检查所有相关的 permissions 复选框为了弄清楚哪个 Angular 色有什么权限。

有什么帮助吗?

最佳答案

我会通过以下方式为每个前提赋予一个值

  • 前提 1 = 1
  • 前提 2 = 2
  • 前提 3 = 4
  • 前提 4 = 8

Angular 色的值是他们拥有的前提的总和

所以

  • Angular 色 1(前提 1、2、4)= 11
  • Angular 色 2(前提 2,3)6

然后取最高的权限值(在本例中为 8)并检查已检查的 Angular 色。

  1. 所以 11-8 = 3 不小于 0,所以前提 4。
  2. 用上次检查的结果(11-8)取当前准入值(4)的一半
  3. 3 - 4 = -1 小于 0。不是前提 3。
  4. 取当前premission值(2)的一半,但保留3的结果
  5. 3 - 2 = 1 不小于 0,所以前提 2。
  6. 还是一样
  7. 1 - 1 = 0 不小于 0,所以前提 1。

    $(".role").on("click", function(){
        $(".perm").prop("checked", false);
        $(".role:checked").each(function() {
            var reduceBy = maxFromDatabase;
            var roleRight = $(this).data("rights");
            while(reduceBy != 0) {
                if(!(roleRight - reduceBy < 0)) {
                    $("input[data-right-val='"+reduceBy+"']").prop("checked", true);
                    roleRight = roleRight-reduceBy;
                } 
                reduceBy = Math.floor(reduceBy/2);
            }
        });           
    });
    

您可以查看此 fiddle 的 html(我使用数据属性)实现 http://jsfiddle.net/8dcp4Lvk/3/

我将值放在 html 的数据属性中。我喜欢这个系统,因为它易于维护。您不需要在 Angular 色和权限之间的数据库中添加一个额外的表,添加或删除一个权限就像从 Angular 色值中添加或删除它的值一样简单。

在 fiddle 中,您所要做的就是添加一个新的前提条件,值为 64,作为第一个 Angular 色 (71) 的 64 和 maxFromDatabase 的 64(您通常会通过查询获得该值,同样与所有数据值)。额外的好处是您还可以以相同的方式在 PHP 代码中使用这些值。

你可以扩展它。为 Angular 色赋予一个值,例如 premission(1、2、4 等),您可以将这些值用于用户。给他两列( Angular 色和前提),在 Angular 色中你给他他所拥有的 Angular 色,在前提中你分配了前提的总数。这样你所需要的只是一些额外的列,而不是额外的表。

关于javascript - 自动选中与数据库中该 ID 相关的复选框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25468904/

相关文章:

javascript - 使用 javascript 的图像更改 onclick 非常快?

jquery - JSON 数据未在 AJAX POST 请求中发送

javascript - 服务器端验证内联显示成功或错误消息

javascript - 未捕获的 TypeError : $content. switchClass 不是函数

javascript - 公理。即使 api 返回 404 错误,如何在 try catch finally 中获得错误响应

php - iOS推送通知返回码102

php - 从php中的字符串中删除转义序列

php - 使用 PHP foreach 循环格式化 jQuery 函数

javascript - Grand/sticky jQuery 插件仅在 771px 以下激活

jquery - 滑动悬停菜单文本切换不适合