2009-08-07 17 views
31

sagen, dass ich ein HTML-Formular haben diese select-Element enthält:Wie wähle ich eine Option Prototyp mit

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

Wie kann ich Prototyp verwenden Sie eine der Option Elemente zu wählen?

Die in the API reference of Form.Element aufgelisteten Methoden scheinen nicht dabei zu helfen.

edit: von "select" Ich meine den äquivalenten Effekt des Attributs "selected" auf ein Optionselement.

Antwort

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 ist eine Anordnung aller Elemente in Option #mySelect Dropdown. Wenn Sie eine oder mehr von ihnen markieren als nur selected Eigenschaft ausgewählt

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

Also im Grunde $ ("option1") es wählen würde ausgewählt = true, richtig.? –

+1

Wenn Sie IDs für Ihre alle Optionen gesetzt haben, dann können Sie es so machen. – RaYell

+0

Danke, dann werde ich das tun. –

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

Um den aktuell ausgewählte Option Gebrauch zu erhalten:

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

Ich dachte, dass '.attributes ['selected'] = true;' ist was ich brauche, aber korrekter Code ist '.selected = true;' – llamerr

+0

das war sehr hilfreich, danke eine Tonne! –

+0

Können Sie einfach '$ ('mySelect'). Value' verwenden, um den Wert zu erhalten? – joshuahedlund

8

nils peter fast es richtig, aber In der Regel ist das "id" -Attribut der Option nicht das, was die Leute auswählen. Diese kleine Änderung macht es funktioniert.

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

Für die zweite Option von Wert auswählen, die Sie diese verwenden:

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

Angenommen, Sie wissen, was schätzen Sie gewählt werden wollen, versuchen Sie:

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

@JamesWiseman: Prototyp! = JQuery – mpen

-1

try dies ...

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

Versuchen:

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

dieses option1

+0

Danke, funktioniert wie ein Charme! Wenn Sie eine Option mit dem ausgewählten Wert aus einer anderen auswählen möchten, wählen Sie: '$ ('select1'). SetValue ($ ('select2'). GetValue())' – joseantgv

Verwandte Themen