2016-11-23 58 views
0

我有一個用戶列表,每個用戶都有一個角色。如何根據<option selected>禁用<option>?

被選爲「Líder」的用戶不能有多個角色,只有「Líder」。

如果用戶選擇另一個選項(女兒),則應禁用選項「Líder」。不是「Líder」的用戶可以擁有多個角色。

這是問題的一個模擬:jsfiddle

HTML:

<select class="selectpicker" id="funcao" multiple data-max-options="1"> 
    <option value="lider">Líder</option> 
    <option value="conhecimento">Para Conhecimentor</option> 
    <option value="participante">Participante</option> 
</select> 
<br><br> 
<select class="selectpicker" id="funcao" multiple data-max-options="1"> 
    <option value="lider">Líder</option> 
    <option value="conhecimento">Para Conhecimentor</option> 
    <option value="participante">Participante</option> 
</select> 
<br><br> 
<select class="selectpicker" id="funcao" multiple data-max-options="1"> 
    <option value="lider">Líder</option> 
    <option value="conhecimento">Para Conhecimentor</option> 
    <option value="participante">Participante</option> 
</select> 
<br><br> 
<select class="selectpicker" id="funcao" multiple data-max-options="1"> 
    <option value="lider">Líder</option> 
    <option value="conhecimento">Para Conhecimentor</option> 
    <option value="participante">Participante</option> 
</select> 

JS:

$('select').change(function(){ 
    var sel = $(this); 
    var data = sel.data('prev'); 
    var val = sel.val(); 
    var prev; 
    if(data){ prev = data.val; } 
    sel.data('prev', {val: val}); 
    sel.nextAll().each(function(){ 
     if(prev){ 
      $(this).find("[value='" + prev+ "']").prop("disabled",false); 
      $('.selectpicker').selectpicker('refresh'); 
     } 
     $(this).find("[value='" + val + "']").prop("disabled",true); 
     $('.selectpicker').selectpicker('refresh'); 
    }); 
    $('.selectpicker').selectpicker('refresh'); 
}); 
+2

發佈您的嘗試 –

+0

https://jsfiddle.net/andrealbson/33q72pto/ –

+0

我幾乎得到了我想要的,但被選爲「Líder」的用戶已禁用該選項......並且在發送形式它提出了一個錯誤。 發生錯誤是因爲select(parent)的選項也被禁用,並且在發送表單時,此選項爲空... https://jsfiddle.net/andrealbson/9e2ovnth/ –

回答

0

您可以檢查與下面的代碼獲得的效果 - jsfiddle

$('select').change(function() { 
    var sel = $(this); 
    disableThis(sel); 
    $('.selectpicker').selectpicker('refresh'); 
}); 

function disableThis(sel) { 
    var temSelecionado = false; 

    $("option[value='1']").each(function() { 
     if (this.selected) { 
      temSelecionado = true; 

      $(this).parent().each(function() { 
       $(this.options).each(function() { 
        if ($(this).val() != "1") { 
         $(this).prop("disabled", true); 
        } 
       }) 
      }); 
     } 
     else { 
       $(this).parent().each(function() { 
       $(this.options).each(function() { 
        if ($(this).val() != "1") { 
         $(this).prop("disabled", false); 
        } 
       }) 
      }); 
     } 
    }); 
} 
+0

就是這樣,@Arkej。但是,如果某些select被選爲「Leader」,則必須在其他選擇中禁用此選項... –

+0

我更改了一個邏輯...並發現一個新問題: 如何取消選擇特定選擇選項,返回到「初始狀態」? 這裏是我的問題的模擬: https://jsfiddle.net/andrealbson/o1xs3m8x/ –

相關問題