2017-07-10 170 views
1

1)我沒有Javascript的知識。選擇多個:如何選擇/取消選擇(Javascript)

2)我正在使用select2(多選)引導表單。 3)如果我點擊相應組的一個選項,我想取消選擇組的其他選項。例如:如果選擇選項值「2」和「6」,然後點擊選項「1」和「5」,它應該自動取消選擇選項「2」和「6」。

謝謝。

  <div align = "center" class="form-group"> 
 
      <label>Filtros</label> 
 
      <select name ="Filtros" id = "Filtros" class="form-control select2" multiple="multiple" data-placeholder="Selecione os Filtros" 
 
        style="width: 100%;"> 
 

 
      <optgroup label="IBC"> 
 
       <option value="1">IBC_ALL</option> 
 
       <option value="2">IBC_SIM</option> 
 
       <option value="3">IBC_NAO</option> 
 
       <option value="4">IBC_Nao_Mostrar</option> 
 

 
      <optgroup label="CROT"> 
 
       <option value="5">CROT_ALL</option> 
 
       <option value="6">CROT_SIM</option> 
 
       <option value="7">CROT_NAO</option> 
 
       <option value="8">CROT_Nao_Mostrar</option> 
 

 
      </select> 
 
      </div>

+0

這不需要JavaScript。這基於用戶輸入的內容。要選擇倍數,必須按住「CTRL」或「SHIFT」。因此,如果我以前選擇了2和6,現在想要忘記這些並選擇1和5,則只需按下1(沒有按下其他任何按鍵),然後按住CTRL並按下5. –

+0

沒有必要你用HTML標記你的問題,因爲大部分的格式化選項都可以通過工具欄來完成,或者簡單地按下ENTER鍵。 –

+0

感謝您的回覆。 1)我使用這個第一個多選表單引導:https://select2.github.io/examples.html。 2)它不像常見的多重選擇形式,我們按住CTRL鍵選擇選項。 – Julio

回答

0

它工作正常,在我身上。如果您檢查來自不同類別的多個選項,它會自動取消選擇另一個類別中的其他選項。
注意:當用戶使用SHIFT密鑰時不起作用。

<div align = "center" class="form-group"> 
<label>Filtros</label> 
<select name ="Filtros" id = "Filtros" class="form-control select2" multiple="multiple" data-placeholder="Selecione os Filtros" 
     style="width: 100%;"> 

<optgroup label="IBC" parent="1"> 
    <option value="1" childof="1">IBC_ALL</option> 
    <option value="2" childof="1">IBC_SIM</option> 
    <option value="3" childof="1">IBC_NAO</option> 
    <option value="4" childof="1">IBC_Nao_Mostrar</option> 

<optgroup label="CROT" parent="2"> 
    <option value="5" childof="2">CROT_ALL</option> 
    <option value="6" childof="2">CROT_SIM</option> 
    <option value="7" childof="2">CROT_NAO</option> 
    <option value="8" childof="2">CROT_Nao_Mostrar</option> 

</select> 
</div> 

<script> 
var selected = { 
    1:[], 
    2:[] 
} 
var last_selected = 1; 
document.getElementById('Filtros').addEventListener('click',function(e){ 
var parent = e.target.getAttribute('childof'); 

if(e.target.selected) 
{ 
    selected[parent].push(e.target); 

    for(var i=0; i < selected[parent].length; i++) 
    { 
    var elem = selected[parent][i]; 

    if(!elem.selected) 
     selected[parent].splice(i,1); 
    } 

    if(parent != last_selected) 
    { 
    for(var i=0; i < selected[last_selected].length; i++) 
    { 
     var elem = selected[last_selected][i]; 
     elem.selected = false; 
    } 
    } 

    last_selected = parent; 
} 
}); 
</script>