2010-01-26 3 views
0

J'ai une boîte de sélection qui est peuplée avec toutes les options disponibles qu'elle peut avoir. Lorsqu'un utilisateur clique sur un enregistrement dans mon application, j'obtiens une réponse xml qui inclut la valeur de l'option pour cet enregistrement. Je voudrais utiliser javascript pour définir l'index sélectionné pour cette option particulière dans la boîte de sélection sans avoir à recharger la boîte de sélection. Existe-t-il un moyen facile de trouver l'index d'une option en fonction de la valeur ou du nom de l'option? Ensuite, je pourrais définir cette option comme l'index sélectionné.Comment sélectionner une option dans une boîte de sélection par la valeur de l'option en utilisant Javascript?

Répondre

3

je avais deuxième réponse de Toby. Cependant, si vous ne pouvez pas utiliser une bibliothèque existante pour une raison quelconque, il est assez facile à faire en javascript simple:

function selectByValue(el, value) { 
    for (var i=0, len=options.length; i<len; i++) { 
     if (el.options[i].value == value) { 
      el.selectedIndex = i; 
      break; 
     } 
    } 
} 

Si vous souhaitez utiliser à la place le texte de l'option, remplacer .value avec .text. Je suppose que vous vouliez dire "texte" puisque les options sélectionnées n'ont pas de propriété "nom".

+1

Merci! Cela a fonctionné. Comme une note latérale ... J'ai découvert par erreur que vous pouvez éviter tout le processus en faisant simplement ceci: document.getElementById ('my_selector'). Value = record_value; Cela semble sélectionner l'enregistrement approprié sans avoir besoin de trouver l'index du tout. IE va probablement exploser là-dessus, mais cela fonctionne dans tous les navigateurs non-FUBARed que j'ai essayés. – user77413

+0

Tu sais, j'avais une intuition bizarre qui fonctionnait bien que je ne l'ai pas essayée. Bon à savoir cependant. – elo80ka

+1

dropdownEl.value = la valeur fonctionne également dans IE. – einarq

0

Je suggère de jeter un oeil à une bibliothèque JS comme jQuery ou Prototype. Ils font ce genre de chose facile.

1

Ce sera assez proche de celle-ci:

function find_index(options, value) { 
    for (var i=0; i<options.length; i++) { 
     if (options[i].value == value) { 
      return i; 
     } 
    } 
    return -1 
} 

function set_selected_option(select_element, value) { 
    var index = find_index(select_element.options, value) 
    if (index != -1){ 
     select_element.selectedIndex = index; 
    } 
} 
Questions connexes