选中其他复选框时禁用复选框

时间:2019-03-13 14:00:57

标签: javascript jquery html asp.net-mvc

我有一个MVC Web应用程序,在一个部分中,我管理用户的权限(例如,确定用户可以查看/编辑/添加/删除ecc ...的信息)。

为防止出现某些错误,如果选中了“管理”列中的复选框,则该行中的其他复选框将被禁用,因为组“管理员”可以执行所有操作,与“管理器”列相同,但是在这种情况下,只能选中其“管理员”列中的复选框。权利将被禁用。

经过很多研究,我没有发现对我的案子有用的任何东西

这是我的查看代码:

<body>
<div class="limiter">
    <br />
    <div class="container-table100">
        <div class="wrap-table100">
            <div class="table">
                <table id="tablePermission">
                    @{
                        CEG_dev_labelsEntities db = new 
                        CEG_dev_labelsEntities();
                        int countY = 1;

                        //get all groups
                        var groups = from g in db.Groups
                                     orderby g.group_name
                                     select new
                                     {
                                         g.group_name,
                                         g.group_description
                                     };
                        <thead>
                            <tr class="table100-head">
                                <th class="column1">Username</th>
                                @foreach (var item in groups)
                                {                                                                            
                                  <td><button>@item.group_name</button</td>
                                }
                            </tr>
                        </thead>
                        foreach (var item in db.Users)
                        {
                            <tbody id="myTable">
                                @{
                                    //get all user's group
                                    var group_list = from g in db.Groups
                                                     join ug in 
                             db.UserGroups on g.id_group equals ug.id_group
                                                 join u in db.Users on 
                                                 ug.id_user equals u.id_user
                                                 where u.username == 
                                                 item.username
                                                 select new
                                                 {
                                                    g.group_name
                                                 };
                                    //save the single values in a list
                                    //so all information are more accesible
                                    List<string> group_user_list = new 
                                    List<string>();
                                    foreach (var item_ug in group_list)
                                    {                                        
                                    group_user_list.Add(item_ug.group_name);
                                    }
                                    <tr style="cursor:default">
                                     <tdclass="column1">
                                      @Html.DisplayFor(model =item.username)
                                     </td>
                                     @foreach (var itemG in groups)
                                     {
                                      //check the corresponding 
                                      //checkbox if user is a member 
                                      //of a specific group                                        
                          if(group_user_list.Contains(itemG.group_name))
                          {
                          <td style="padding-left:80px"><input 
                          type="checkbox"  checked="checked" 
                          class="chkclass" username="@item.username" 
                          groupname="@itemG.group_name" id="@countY" /></td>
                           }
                           else
                           {
                           <td><input type="checkbox" class="chkclass" 
                               username="@item.username" 
                               groupname="@itemG.group_name" 
                               id="@countY" />
                           </td>
                           }
                           countY++;
                         }
                        </tr>
                        }
                     </tbody>
                        }
                    }
                    </table>
                </div>
            </div>
        </div>
    </div>
</body>

这是表格:

enter image description here

任何建议都值得赞赏。

狮子座。

编辑

我在复选框上具有此点击事件,用于管理用户的权限

$(document).ready(function () {
    $('.chkclass').click(function () {
        var getchkid = $(this).attr('id');
        var isChecked = $('#' + getchkid).is(':checked');
        if ($('#' + getchkid).is(':checked') == true) {
            // to be send to your call
            var username = $(this).attr('username');
            var groupname = $(this).attr('groupname');
            //here put your call ajax to your action
            $.ajax({
                type: 'Post',
                url: '/UserGroups/AddPermission',
                dataType: 'json',
                data: {
                    'usr': username,
                    'grp': groupname
                },
                success: function (result) {
                    $('#' + getchkid).prop('checked', true);
                },
                error: function (jqxhr, status, exception) {
                    alert('Exception:', exception);
                }
            })
        }
        else {
            if ($('#' + getchkid).is(':checked') == false) {
                // to be send to your call
                var username = $(this).attr('username');
                var groupname = $(this).attr('groupname');
                //here put your call ajax to your action
                $.ajax({
                    type: 'Post',
                    url: '/UserGroups/DeletePermission',
                    dataType: 'json',
                    data: {
                        'usr': username,
                        'grp': groupname
                    },
                    success: function (result) {
                        if (result.error == true) {
                            alert('Error, must be there at least one 
                            admin');
                            $('#' + getchkid).prop('checked', true);
                        }
                        else {
                            $('#' + getchkid).prop('checked', false);
                        }

                    },
                    error: function (jqxhr, status, exception) {
                        alert('Exception:', exception);
                    }
                })
            }
        }
    });
});

1 个答案:

答案 0 :(得分:0)

由于您正在执行所有相同的循环,因此可以执行以下操作:

https://jsfiddle.net/z2mf8314/1/

$('.chkclass').click(function () {
  var getchkid = $(this).attr('id');
  var isChecked = $('#' + getchkid).is(':checked');
  var username = $(this).attr('username');
  var groupname = $(this).attr('groupname');
  (getchkid == "1" && isChecked) ? $(this).closest('tr').find('input').not('#1').prop({'disabled': true, 'checked': false }) : $(this).closest('tr').find('input').prop('disabled', false);
  if (isChecked) {
    // to be send to your call
    //here put your call ajax to your action

  }
  else {
    // to be send to your call
    //here put your call ajax to your action

  }
});