2009-07-28 12 views
8

W YUI 3 Mam węzeł, który jest moim wybierz pole: (? Nawet jeśli jest ich więcej niż jeden)Jak uzyskać wartości skrzynki wyboru w YUI 3?

Y.get('#regionSelect'); 

Jak mogę uzyskać wartości <option> które są aktualnie wybrane Również jest tam out tutorial tam, który mówi mi wyraźnie, jak to zrobić (nie chcę serializować całego formularza)?

Odpowiedz

12

Gdy masz selektor, można łańcuch get i 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 
}); 

Właśnie używa dema/przykłady na http://developer.yahoo.com/yui/3/ zrozumieć rzeczy.

+0

Dzięki! Gdzie mówi, jak zdobyć atrybuty? – ash

+1

Nie ma za co. Każdy samouczek w języku JavaScript o DOM powinien zawierać atrybuty dla obiektów wyboru i opcji (jak również wszystkich innych). Te nie są specyficzne dla YUI, ale są częścią DOM. Na przykład: http://www.w3schools.com/htmldom/dom_obj_select.asp – seth

+0

"Wybrane" i "tekst" są w rzeczywistości selektorami, a nie atrybutami. Zostawiłem to ... – seth

8

// Wybrana wartość

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

// Wybrane Index

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

to zawsze zwraca pusty ciąg ... czy nie trzeba mieć opcji, a następnie ich wartości? – lisak

+0

Właściwość "_node" nie jest częścią interfejsu API węzła YUI. Nigdy nie powinieneś polegać na tym. – Nathan

+0

"_node" to * wizualna prywatna * właściwość obiektu oparta na standardach kodowania YUI –

5

może nie trzeba iterację wszystkich opcji, jeśli potrzebujesz tylko jednej wybranej:

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

można bezpośrednio używać. Wymagaj modułu selector-css3 do obsługi IE.

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

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

+0

Dzięki za zaktualizowany sposób. – AngelWarrior