2010-07-21 1 views
1

J'ai un élément de sélection qui affiche plusieurs options avec le même texte:Comment puis-je supprimer des options avec le même texte d'un élément de sélection?

<select name="tur" id="tur"> 
     <option value="1">a</option> 
     <option value="2">a</option> 
     <option value="3">a</option> 
     <option value="4">a</option> 
     <option value="5">b</option> 
     <option value="6">b</option> 
     <option value="7">c</option> 
     <option value="8">d</option>   
      </select> 

L'utilisation de JavaScript, je voudrais supprimer ces doublons de sorte que seul un de chaque est représentée:

<select name="tur" id="tur"> 
     <option value="1">a</option> 
     <option value="5">b</option> 
     <option value="7">c</option> 
     <option value="8">d</option>   

Répondre

0
var remove = [], values = {}, value, i; 
var options = document.getElementById('tur').getElementsByTagName('option'); 
for (i=0; i<options.length; i++) { 
    value = options[i].innerHTML.replace(/^\s*|\s*$/g, ''); 
    if (value in values) remove.push(options[i]); 
    else values[value] = true; 
} 

for (i=0; i<remove.length; i++) { 
    remove[i].parentNode.removeChild(remove[i]); 
} 
2

Vous pouvez parcourir les éléments <option>, en vérifiant chacun pour voir si son contenu textuel est dans un tableau. Si c'est le cas, supprimez le <option>. Sinon, ajoutez son contenu au tableau. Cela supprimera les options redondantes dans la liste.

Essayez-:http://jsfiddle.net/FXq8W/

​var array = []; 

​$('#tur option').each(function() { 
    var $th = $(this); 
    var text = $th.text(); 
    if($.inArray(text, array) > -1) { 
     $th.remove(); 
    } else { 
     array.push(text); 
    } 
});​​​​​​​​​​​​​​ 
Questions connexes