2009-07-28 4 views
8

En YUI 3 J'ai un noeud qui est ma boîte de sélection: (même s'il y a plus d'un)Comment puis-je obtenir les valeurs de boîte de sélection dans YUI 3?

Y.get('#regionSelect'); 

Comment puis-je obtenir les <option> valeurs qui sont actuellement sélectionnées Aussi, est-il un tutoriel sur là qui me dit explicitement comment faire ceci (je ne veux pas sérialiser un formulaire entier)?

Répondre

12

Une fois que vous avez le sélecteur, vous pouvez enchaîner get et each

Y.get("#regionSelect").get("options").each(function() { 
    // this = option from the select 
    var selected = this.get('selected'); 
    var value = this.get('value'); 
    var text = this.get('text'); 
    // apply secret sauce here 
}); 

Je viens en utilisant les démos/exemples sur http://developer.yahoo.com/yui/3/ pour comprendre les choses.

+0

Merci! Où dit-on comment obtenir des attributs? – ash

+1

Vous êtes les bienvenus. Tout tutoriel JavaScript sur le DOM doit avoir les attribs pour les objets select et option (ainsi que tous les autres). Ce ne sont pas spécifiques à YUI mais font partie du DOM. Par exemple: http://www.w3schools.com/htmldom/dom_obj_select.asp – seth

+0

Les 'selected' et 'text' sont en fait des sélecteurs, pas des attributs. Je l'ai laissé ... – seth

8

// valeur sélectionnée

  • Y.one ('# regionSelect') ._ node.value;
  • Y.one ('# regionSelect'). Get ('valeur');

// Index séléctionée

  • Y.one ('# regionSelect') ._ node.selectedIndex;
  • Y.one ('# regionSelect'). Get ('selectedIndex');
+0

cela renvoie toujours une chaîne vide ... ne faut-il pas avoir les options et ensuite leur valeur? – lisak

+0

La propriété "_node" ne fait pas partie de l'API YUI Node. Vous ne devriez jamais compter dessus. – Nathan

+0

"_node" est une propriété d'objet * visuelle privée * basée sur les normes de codage YUI –

5

Vous ne pourriez pas besoin de parcourir toutes les options si vous avez juste besoin d'un sélectionné:

var index = Y.get("#regionSelect").get('selectedIndex'); 
var value = Y.get("#regionSelect").get("options").item(index).getAttribute('value'); 
1

Vous pouvez utiliser directement ce. Nécessite le module selector-css3 pour prendre en charge IE.

YUI().use("selector-css3", "node", function (Y) { 
    var text = Y.one("#ownerSelector option:checked").get("text"); 
}); 

http://jsfiddle.net/neosoyn/r8crW/

+0

Merci pour la mise à jour. – AngelWarrior

Questions connexes