2010-05-30 5 views
0

Fondamentalement, mais en pur javascript:
How to get 'value' of select tag based on content of select tag, using NokogiriJavascript: Sélectionnez l'option basée sur son contenu

J'ai une liste de sélection avec un grand nombre de pays/états, et je veux être en mesure de choisir l'une basée sur ce qui est entre les balises <option>.

<option value="4783">Argentina</option> 

(je sais que je pourrais utiliser la valeur, mais chacun est un maillage aléatoire de nombres, donc je dois recueillir chacun un individu - et non économique)

Répondre

5

Il est un peu douloureux, mais en pur JavaScript:

for(var i=0,sL=mySelObj.length;i<sL;i++){ 
    if(mySelObj.options[i].text == myValue){ 
    mySelObj.selectedIndex = i; 
    break; 
    } 
} 
+1

Merci! Fonctionne un charme !! –

+0

pas de problème, heureux d'aider! – scunliffe

+0

Comment est-ce douloureux? –

0

La propriété textContent vous permet de voir ce qu'il y a dans le tag. Ma tête et sans test, qui devrait fonctionner:

function selectByDisplayValue(selectTag, displayValue) 
{ 
    var options = selectTag.getElementsByTagName('option'); 
    for(var i = 0; i < options.length; i++) 
     if(options[i].textContent == displayValue) 
     { 
      options[i].selected = true; 
      break; 
     } 
} 

selectTag est l'objet DOM de votre balise <select> et displayValue est la valeur d'affichage de l'option que vous souhaitez sélectionner (pour votre exemple, « Argentine » ce serait).

+2

'textContent' est une méthode DOM niveau 3 qui n'est pas supportée par IE (et d'autres navigateurs mineurs ou plus anciens). Pour les objets 'Option', vous pouvez utiliser' .text', qui remonte à JavaScript 1.0. – bobince

1

Maintenant que querySelector est disponible dans la plupart des navigateurs, vous pouvez utiliser:

document.querySelector('select').selectedIndex = 
    document.querySelector('option[value=4783]').index; 
+1

Si vous connaissez les navigateurs que vous devez prendre en charge, vous pouvez consulter la matrice de support de querySelector à l'adresse http://caniuse.com/queryselector. – Trott

Questions connexes