PDA

Ver la Versión Completa : Uso y abuso del elemento "lista de opciones"


papulo
11-01-2006, 18:45:23
¿Como capturo los valores que le he asignado a la lista de opciones? en www.factorydata.com (http://www.factorydata.com/) tengo una lista de esas que quiero usar para seleccionar el lenguaje, pero no se como utilizarla. Tengo puesto el español con el valor 1 y el ingles con el valor 2, pero nada mas.

Saludos a todos los cracks del foro, sois la releche ;).

roman
11-01-2006, 19:21:58
Si no mal recuerdo, en la etiqueta <select> asignas un manejador del evento onChange:


<select name='idioma' onChange='cambiaIdioma(this)'>


cambiaIdioma sería una función JavaScript:


function cambiaIdioma(oLista)
{
/*
aquí accedes al valor actual de la lista con
oLista.value y actúas de acuerdo al valor.
*/
}


Ya lo que quieras hacer con el valor seleccionado será cuestión de que especifiques.

// Saludos

dec
11-01-2006, 19:30:57
Hola,

Para mí tengo que hay varias formas de lograrlo (ahora no consigo recordar... mecachis...). Román se me ha adelantado, pero, había escrito lo siguiente a modo de ejemplo: es muy similar a lo que dice Román:


<html>
<head>

<script type="text/javascript">

function listalenguajesChange(index) {
alert(index);
}

</script>

</head>
<body>

<form action="none" name="lenguajes" id="lenguajes">
<select name="listalenguajes" id="listalenguajes"
onchange="listalenguajesChange(this.value);">

<option value="0">Inglés</option>
<option value="1">Español</option>

</select>
</form>

</body>
</html>


Si digo que se puede hacer de otra forma es porque creo recordar que era posible acceder al elemento seleccionado en la lista sin necesidad de utilizar la propiedad "value" de la misma, incluso, sin necesidad de que cada uno de los "option" tenga que tener un atributo "value"... accediendo, directamente, a su "título", o lo que hay entre "<option>" y "</option>"... pero, ya digo que ahora no caigo en cómo se hacía, si es que se podía hacer,...

kayetano
11-01-2006, 19:43:28
Hola

Aunque no viene a cuento, ... papulo espero que en la web que estas haciendo ... bueno que estamos haciendo, aparezca alguna referencia al foro.

roman
11-01-2006, 19:45:27
Si digo que se puede hacer de otra forma es porque creo recordar que era posible acceder al elemento seleccionado en la lista sin necesidad de utilizar la propiedad "value" de la misma, incluso, sin necesidad de que cada uno de los "option" tenga que tener un atributo "value"


Quizá te refieres a algo así:


<html>
<head>
<title> Lista </title>
<script type='text/javascript'>
function cambiaIdioma(oLista)
{
index = oLista.selectedIndex;
oItem = oLista.options(index);

alert(oItem.innerHTML);
}
</script>
</head>

<body>
<select name="idioma" onChange='cambiaIdioma(this)'>
<option>Español</option>
<option>English</option>
</select>

</body>
</html>


// Saludos

papulo
11-01-2006, 20:26:16
Hola

Aunque no viene a cuento, ... papulo espero que en la web que estas haciendo ... bueno que estamos haciendo, aparezca alguna referencia al foro.

No prometo absolutamente nada de nada. Se lo comentaré al jefe, pero el manda y yo penco.

Aun así insistiré para ver si lo convenzo.:rolleyes:

dec
11-01-2006, 22:00:22
Hola,


Quizá te refieres a algo así: (...)


Pues es otra forma de hacerlo, para quien pueda interesarle. ;)

Sin embargo, no es exactamente lo que recuerdo... (porque sigo sin acordarme del todo) era más simple, más sencillo... era algo que te dejaba diciendo, "está bien, o sea que "esto" asume el elemento seleccionado como lo que quiero"... Pero, ahora que lo pienso, es posible que fuera algo como lo que dices y, al no recordarlo bien... no creo que haya que darle más vueltas al asunto. Queda claro que hay varias formas de conseguir el objetivo en este caso. Gracias Román. ;)

kayetano
12-01-2006, 10:38:32
Hola

Veo el código que se a propuesto y no termino de encontrar la utilidad que busca papulo, supongo que sería mas útil y facil el siguiente método:


...
<body>
<form method="post" action="cambia_idioma.php">
<select name="idioma" onChange='this.form.submit()'>
<option>Español</option>
<option>English</option>
</select>
</form>
...


Con esto cada vez que se modifique el valor del SELECT llama a una página que realiza la operación del cambio de idioma (yo modifico el valor de una cookie), tambien se puede recargar la misma página y antes de mostrarla y con PHP llamar a un idioma o a otro.

No termino de verle la utilidad el obtener el valor del SELECT desde javascript, ya que por narices va a tener que recargar la página.

roman
12-01-2006, 16:35:12
Si por código propuesto te refieres al que yo puse, la verdad es que yo tampoco le veo sentido :p

Originalmente, respondiendo a la pregunta de papulo, simplemente dije que usara el evento onChange. En la función cambiaIdioma puede hacer el submit y anteriormente cualquier procesamiento extra que pudiera requerir. De no requerir nada extra, ciertamente puede poner directamente el submit en la asignación de onChange.

El otro código fue sólo en referencia a lo comentado por David y me disculpo si esto causó alguna confusión.

// Saludos

kayetano
12-01-2006, 17:34:24
Hola

Tranquilo roman, no he querido decir ni hacer nada, simplemente que no veía mucho sentido al intentar obtener el valor de "idioma" en javascript. Unicamente con el evento onchange es suficiente ya que no hay posibilidad de error ya que es un desplegable y solo hay dos opciones.

En ningún momento he pensado que hayas dicho, ni tu ni nadie, algo incorrecto simplemente estaba matizando la necesidad de utilizar uno u otro método.