2017-04-17 70 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); 
    } 
    }); 
} 
相關問題