web-dev-qa-db-fra.com

Comment sélectionner une option à l'aide d'un prototype

Disons que j'ai un formulaire HTML contenant cet élément de sélection:

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

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

Les méthodes répertoriées dans la référence API de Form.Element ne semblent pas aider à cela.

modifier: par "sélectionner", je veux dire l'effet équivalent de l'attribut "sélectionné" sur un élément d'option.

31
lutz
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 menu déroulant. Si vous souhaitez marquer un ou plusieurs d'entre eux comme sélectionnés, utilisez simplement la propriété selected

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

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

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

nils petersohn a presque réussi, mais généralement, l'attribut "id" de l'option n'est pas celui contre lequel les gens sélectionnent. 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
  }
});
8
Chaz Meister Rock

Essaye ça:

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

celui-ci sélectionnerait option1

7
some guest

En supposant que vous savez quelle valeur vous souhaitez sélectionner, essayez:

$('mySelect').value = 2; // 2 being the value you want selected
1
Alan Whipple

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

var myChoice = '2';

$$('select#mySelectId option').each(function(o) {
    o.selected = o.readAttribute('value') == myChoice;
});
1
Qrizly
var itis = $(mySelectId).select('option[value="' + sValueToSelect + '"]');
if ( itis && itis.length > 0 )
    itis[0].selected = true;
1
Uncle Shmuel
var selectThis = 'option1';
$$('select#mySelect option').each(function(o){
      if(o.id==selectThis){o.selected = true;$break;}
});
0
nils petersohn