2017-04-17 67 views
0

基本上我将角色分配给用户。我想自动显示预先分配的角色。我能够渲染上的第一次,但是当值下拉改变复选框保持不变:我想在从下拉列表中选择另一项时刷新复选框

type: "POST", 
    dataType: "json", 
    url: "/UserRoles/myaction", 
    data: { "userid": DropDownSelectedVal }, 
    success: function (data) { 
     $.each(data, function (i, val) { 
      var a = (data[i]); 
      $("#" + a).attr('checked', true); 
     }); 
    }, 

    error: function (error) { 
     alert('error; ' + eval(error)); 
    } 

}) 
+0

你能提供你的HTML的更多的代码片段,并详细说明了什么你试着去做。 –

+0

@Abdul Basit Rana:使用浏览器的开发者选项来调试你的jQuery代码,并试图发现如果你的$(“#”+ a)代码给出了正确元素的指针。使用Consol开发人员选项窗口并查看每个属性和他们的价值使用运行$(“#”+ a)代码 –

+0

@RandikaRatnayake你还想要什么? –

回答

0

首先尝试清除使用上下拉的选择更改事件下面的代码的所有复选框。

  $('input:checkbox').removeAttr('checked'); 

然后运行您的ajax代码来选择新的用户角色。

  type: "POST", 
      dataType: "json", 
      url: "/UserRoles/myaction", 
      data: { "userid": DropDownSelectedVal }, 
      success: function (data) { 
       $.each(data, function (i, val) { 
        $("#" + val).prop('checked', true); 
       }); 
      }, 
      error: function (error) { 
       alert('error; ' + eval(error)); 
      } 


     }) 
+0

@AbdulBasitRana :如果这对你有帮助,请将此标记为答案 –

0

你应该控制所有复选框。你可以试试这个。

url: "/UserRoles/myaction", 
data: { "userid": DropDownSelectedVal }, 
success: function (data) { 
    $.each(data, function (i, val) { 

     var a = (data[i]); 
     if(!$("#" + a).is(":checked")) { 

     $("#" + a).attr("checked", true); 

      }else{ 
      $("#" + a).attr("checked", false); 
      } 
    }); 
}, 
+0

这不是一个解决方案..我只是想在下一次选择时刷新或重置复选框的值 –

0

我可以建议的优雅解决方案是维护一个隐藏的输入来存储您选中的所有权限。

你的HTML

<input type="hidden" id="_hiddenSelectedPermissions" value="2, 1" /> 
<input class="permissions" type="checkbox" value="1">Default Permission 1 
<input class="permissions" type="checkbox" value="2">Default Permission 2 
<input class="permissions" type="checkbox" value="3">Permission 3 
<input class="permissions" type="checkbox" value="4">Permission 4 
<input class="permissions" type="checkbox" value="5">Permission 5 

设置隐藏控制后,阿贾克斯的结果值,并调用以下功能重新分配所有选中的复选框

function refreshSelectedPermissions() { 
    $('input:checkbox.permissions').prop('checked', false); 
    var selected = $('#_hiddenSelectedPermissions').val().split(",") || []; 
    $('input:checkbox.permissions').each(function() { 
    var value = $(this).val(); 
    if($.inArray(value, selected) === -1){ 
     $(this).prop('checked', false); 
    } 
    else{ 
     $(this).prop('checked', true); 
    } 
    }); 
} 
相关问题