2017-07-10 134 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>