2010-04-26 12 views

Respuesta

19

No creo prototipo tiene ningún acceso directo que lo hace por usted, por lo que:

var box = $('serverDropList'); 
var text = box.selectedIndex >= 0 ? box.options[box.selectedIndex].innerHTML : undefined; 

... le da la innerHTML de la opción seleccionada, o undefined si no hay ninguno.

Si lo desea, puede utilizar Element#addMethods para definir esto de una vez que esté disponible en todos sus cuadros de selección:

Element.addMethods("SELECT", (function() { 
    function getSelectedOptionHTML(element) { 
     if (!(element = $(element))) return; 
     var index = element.selectedIndex; 
     return index >= 0 ? element.options[index].innerHTML : undefined; 
    } 

    return { 
     getSelectedOptionHTML: getSelectedOptionHTML 
    }; 
})()); 

Uso:

var text = $('serverDropList').getSelectedOptionHTML(); 

que utiliza una función llamada cuando se define ese. Si no te molesta funciones con nombre (que soy, always use them), puede que sea un poco más simple:

Element.addMethods("SELECT", { 
    getSelectedOptionHTML: function(element) { 
     if (!(element = $(element))) return; 
     var index = element.selectedIndex; 
     return index >= 0 ? element.options[index].innerHTML : undefined; 
    } 
); 
21

Si está utilizando prototipo, puede utilizar:

var text = $('serverDropList')[$('serverDropList').selectedIndex].text; 
+0

Gracias :) trabajando bien :) – Elangovan

+0

Esta debería ser la respuesta CORRECTA. Perfecto – Apeiron

2
function getSelectedValue(obj) { 
    return obj.options[obj.selectedIndex].value; 
} 

Uso:

<select onchange="alert(getSelectedValue(this););" id="mySelect"> 
<option value="1">one</option> 
<option value="2">two</option> 
</select> 

o

getSelectedValue(document.getElementById('mySelect')); 

o (cuando se utiliza prototipo o jQuery)

getSelectedValue($('mySelect')); 
+1

Esto no devuelve el valor del texto, sino la propiedad 'valor' del elemento seleccionado. El OP estaba pidiendo el valor de texto de la opción seleccionada. – cjc343

5

Lo siento si estoy tarde con esta respuesta, pero yo estaba buscando en el mismo problema y que no estaba satisfecho con esta respuesta, por lo busqué una mejor respuesta:

Prototype tiene el siguiente selector que puede usar para obtener el valor seleccionado de su lista: $ F. Así que en situación ejemplo, debería funcionar el siguiente código:

$F('serverDropList'); -- this for getting the value 
$F('serverDropList').text; -- this for getting the text 
+0

esto es mucho mejor ... ¿hay alguna manera de mezclar eso junto con un 'esto' creado por un cambio? – Damon

+1

nm .. me estoy volviendo indefinido al tratar de usar esto .. – Damon

+0

No estoy muy seguro de si esta función es compatible con todos los navegadores, por lo que podría verificar eso, de lo contrario podría haber cometido un error, enviar un violín entonces puedo ayudar a tu causa – decebal

0

Seleccione la segunda opción:

<select onchange="alert(getSelectedValue(this););" id="mySelect"> 
    <option> value="1" city="chicago"> one </option> 
    <option> value="2" city="orlando"> two </option> 
</select> 

necesito para recoger la ciudad valor del artículo.

Cuestiones relacionadas