2009-08-07 6 views
31

que j'ai un formulaire HTML contenant cet élément de sélection:Comment sélectionner une option à l'aide prototype

<select name="mySelect" id="mySelect"> 
    <option value="1" id="option1">1</option> 
    <option value="2" id="option2">2</option> 
    </select> 

Comment puis-je utiliser un prototype pour sélectionner l'un des éléments d'options?

Les méthodes énumérées dans the API reference of Form.Element ne semblent pas aider avec ceci.

edit: by "select" Je veux dire l'effet équivalent de l'attribut "selected" sur un élément d'option.

Répondre

33
var options = $$('select#mySelect option'); 
var len = options.length; 
for (var i = 0; i < len; i++) { 
    console.log('Option text = ' + options[i].text); 
    console.log('Option value = ' + options[i].value); 
} 

options est un tableau de tous les éléments d'option dans #mySelect déroulante. Si vous souhaitez marquer un ou plusieurs d'entre eux comme choisis simplement utiliser selected propriété

// replace 1 with index of an item you want to select 
options[1].selected = true; 
+2

Donc, fondamentalement, il est $ ("option1") = true sélectionné, à droite.? –

+1

Si vous avez des ID pour toutes vos options, alors oui, vous pouvez le faire comme ça. – RaYell

+0

Merci, alors je vais le faire. –

0
var selectThis = 'option1'; 
$$('select#mySelect option').each(function(o){ 
     if(o.id==selectThis){o.selected = true;$break;} 
}); 
15

Pour obtenir l'option sélectionnée, utilisez:

$$('#mySelect option').find(function(ele){return !!ele.selected}) 
+0

Je pensais que '.attributes ['selected'] = true;' est ce dont j'ai besoin, mais le code correct est '.selected = true;' – llamerr

+0

cela a été très utile, merci beaucoup! –

+0

Pouvez-vous simplement utiliser '$ ('mySelect'). Value' pour obtenir la valeur? – joshuahedlund

8

nils Petersohn presque obtenu ce droit, mais Généralement, l'attribut "id" de l'option n'est pas celui sur lequel les gens sont sélectionnés. ce petit changement le fait fonctionner.

var selectThis = 'option1'; 
$$('select#mySelectId option').each(function(o) { 
    if(o.readAttribute('value') == selectThis) { // note, this compares strings 
    o.selected = true; 
    throw $break; // remove this if it's a multi-select 
    } 
}); 
1

Pour sélectionner la deuxième option en termes de valeur, vous pouvez utiliser ceci:

var myChoice = '2'; 

$$('select#mySelectId option').each(function(o) { 
    o.selected = o.readAttribute('value') == myChoice; 
}); 
1
var itis = $(mySelectId).select('option[value="' + sValueToSelect + '"]'); 
if (itis && itis.length > 0) 
    itis[0].selected = true; 
1

En supposant que vous savez quelle est la valeur que vous voulez sélectionner, essayez:

$('mySelect').value = 2; // 2 being the value you want selected 
+0

@JamesWiseman: prototype! = JQuery – mpen

-1

essayer ce ...

document.observe('dom:loaded', function() { 
    $('mySelect').observe('change', function(event) { 
    ... 
    }); 
}); 
7

Essayez ceci:

$('mySelect').setValue(1); // or whatever value you want to select 

celui-ci choisirait option1

+0

Merci, fonctionne comme un charme! Et si vous voulez sélectionner une option avec la valeur sélectionnée d'une autre sélection, utilisez: '$ ('select1'). SetValue ($ ('select2'). GetValue())' – joseantgv

Questions connexes