dominios y alojamiento web en hostalia

Control de campos select con Javascript

15 de enero de 2003
Valoración del artículo:
Descripción y ejemplo para el control de campos de formulario select, también llamados listas desplegables o combo box.
Atención: Contenido exclusivo de DesarrolloWeb.com. No reproducir. Copyright.
El objeto select de un formulario es una de esas listas desplegables que nos permiten seleccionar un elemento. Se despliegan apretando sobre una flecha, a continuación se puede escoger un elemento y para acabar se vuelven a plegar. Se puede ver un elemento select de un formulario a continuación.

Uno de estos elementos se puede obtener utilizando la etiqueta <SELECT> dentro de un formulario. A la etiqueta le podemos añadir un atributo para darle el nombre, NAME, para luego acceder a ese campo mediante Javascript. Para expresar cada una de las posibles opciones del campo select utilizamos una etiqueta <OPTION> a la que le introducimos un atributo VALUE para expresar su valor. El texto que colocamos después de la etiqueta <OPTION> sirve como etiqueta de esa opción, es el texto que ve el usuario asociado a esa opción.

Propiedades del objeto select

Vamos a ver una lista de las propiedades de este elemento de formulario.

length
Guarda la cantidad de opciones del campo select. Cantidad de etiquetas <OPTION>

Option
Hace referencia a cada una de sus opciones. Son por si mismas objetos.

options
Un array con cada una de las opciones del select.

selectedIndex
Es el índice de la opción que se encuentra seleccionada.

Aparte de las conocidas propiedades comunes a todos los elementos de formulario: form y name y type.

Métodos del objeto select

Los métodos son solamente 2 y ya conocemos su significado.

blur()
Para retirar el foco de la aplicación de ese elemento de formulario.

focus()
Para poner el foco de la aplicación.

Objeto option

Tenemos que pararnos a ver también este objeto para entender bien el campo select. Recordamos que las option son las distintas opciones que tiene un select, expresadas con la etiqueta <OPTION>.

Propiedades de option

Estos objetos sólo tienen propiedades, no tienen métodos. Vamos a verlas.

defaultSelected
Indica con un true o un false si esa opción es la opción por defecto. La opción por defecto se consigue con HTML colocando el atributo selected a un option.

index
El índice de esa opción dentro del select.

selected
Indica si esa opción se encuentra seleccionada o no.

text
Es el texto de la opción. Lo que puede ver el usuario en el select, que se escribe después de la etiqueta <OPTION>.

value
Indica el valor de la opción, que se introduce con el atributo VALUE de la etiqueta <OPTION>.

Ejemplo de acceso a un select

Vamos a ver un ejemplo sobre cómo se accede a un select con Javascript, como podemos acceder a sus distintas propiedades y a la opción seleccionada.

Vamos a empezar viendo el formulario que tiene el select con el que vamos a trabajar. Es un select que sirve para valorar el web que estamos visitando.

<form name="fomul">
Valoración sobre este web:
<select name="miSelect">
<option value="10">Muy bien
<option value="5" selected>Regular
<option value="0">Muy mal
</select>
<br>
<br>
<input type=button value="Dime propiedades" onclick="dimePropiedades()">
</form>

Ahora vamos a ver una función que recoge las propiedades más significativas del campo select y las presenta en una caja alert.

function dimePropiedades(){
    var texto
    texto = "El numero de opciones del select: " + document.formul.miSelect.length
    var indice = document.formul.miSelect.selectedIndex
    texto += "nIndice de la opcion escogida: " + indice
    var valor = document.formul.miSelect.options[indice].value
    texto += "nValor de la opcion escogida: " + valor
    var textoEscogido = document.formul.miSelect.options[indice].text
    texto += "nTexto de la opcion escogida: " + textoEscogido
    alert(texto) }

Esta función crea una variable de texto donde va introduciendo cada una de las propiedades del select. La primera contiene el valor de la propiedad length del select, la segunda el índice de la opción seleccionada y las dos siguientes contienen el valor y el texto de la opción seleccionada. Para acceder a la opción seleccionada utilizamos el array options con el índice recogido en las segunda variable.

Podemos ver el ejemplo en funcionamiento aquí.

Podemos ver un ejemplo más practico sobre qué se puede hacer con un campo select en el reportaje de cómo hacer un navegador desplegable con Javascript.

Propiedad value de un objeto select

Para acceder al valor seleccionado de un campo select podemos utilizar la propiedad value del campo select en lugar de acceder a partir del vector de options.

Para el anterior formulario sería algo parecido a esto.

formul.miSelect.value

Sin embargo, esta propiedad sólo está presente en navegadores Internet Explorer, por lo que es recomendable acceder utilizando el vector de options con el índice de la posición seleccionada si deseamos que la página sea compatible con todos los navegadores. Hemos querido añadir este punto para que, si alguna vez utilizamos o vemos utilizar este método de acceso, sepamos su pega y porque es mejor utilizar el vector de options.

Compartir en redes sociales

Comentarios
Fueron enviados 21 comentarios al artículo
2 comentarios no revisados
19 comentarios revisados:
Por: oscar
03/11/2006
quisiera saber como hacer para que al seleccionar un de las opciones de un select cargue diferentes opciones en otro select.
ej. un select con paises y otro con ciudades que dependen del pais seleccionado
Por: Ricky
19/1/2007
Hola, yo estoy haciendo mis pruebas en un navegador Firefox, y me funciona la linea formul.miSelect.value , quizá sea porque y implemetaron su uso directo en este navegador. Nada mas, saludos.
Por: franjo
31/3/2009
Excelente articulo en un componente tan complejo como este. Solo remarcar que en el codigo <form name="fomul"> hay un error ya que para que funcione correctamente, el formulario deberia llamarse formul.
Felicidades
Por: Heidy
01/7/2009
hola, escribo para comentar lo interesate y bien estructurado que esta este articulo. continuen asi :)
Pregunta
Por: rsiscoq
30/7/2009
Hola yo quiero que teniendo un Slect las opciones que tenga este, las pueda arrastrar a una tabla, alguien sabe como logro esto?
objeto select con Chrome
Por: Paulo Arieu
14/9/2009
Hola.Yo quiero saber como acceder al objeto select con Chrome,ya que no me funciona en este navegador la opcion que uds. enseñan en el articulo.
Saludos cordiales y espero su amable respuesta
selectedIndex
Por: smallsof
17/9/2009
hola yo ya puese en pratica este tutorial pero no me resulta no se si alguien me kiera y pueda ayudar mi formulario se llama josForm y el nombre de mi selector es nventas


aplico este escript
function selectChange() {

var opcion = document.josForm.nventas.selectedIndex; //selectedIndex es el indice de la opcion seleccionada
alert(opcion)
var venta = document.josForm. nventas.options[opcion].value;
alert(venta);
}
y lo unico que obtengo es : undefined
Bien
Por: Rodrigo Murillo
11/12/2009
Muy útil. No te olvides de usar etiquetas de cierre para los <option> (<option value="1">Hola</option>), así como para los "br", que se cierran sólos, pero hay que ponerlo así <br /> (con el espacio incluído), por lo demás felicitaciones, esta bueno.
Congratulations!
Por: Guillermo
05/1/2010
Muy Bueno, pero porque no responden a Oscar, yo tambien estoy tratando de hacer uno.
Y la observacion que hicieron de "FORMUL" es digno de agradecer. Por esos pequenos detalles siempre hay que estar agradecido.

Esperare respuesta a la pregunta de Oscar. bye bye
Para smallsof
Por: guillermo
06/1/2010
Para smallsof

Utiliza otro nombre de variable.

bye

benito_...
mostrar el texto de un select
19/1/2010
tengo un formulario que una vez relleno envia los datos para mostrar, pero cuando trato despues de mostrar los datos, solo consigo que me salga el numero de indice.

Algo asi es lo que necesito, pero no se como mostrarlo.
var textoEscogido = document.formul.miSelect.options[indice].text
texto += " Texto de la opcion escogida: " + textoEscogi

en el select tengo este codigo:
<select class='combo' id='select_0' name='frm_aer_origen' onchange='cargaContenido()'>
<option value='1'>Barcelona (El Prat)</option>
<option value='2'>Girona</option>
<option value='3'>Reus</option>


envio el formulario con post y donde muestro los datos tengo:

$aer_origen=$_POST['frm_aer_origen'];

echo "Aeropuerto origen : $aer_origen <br />";

// pero esto solo me muestra el numero del indice que he elegido en el select del formulario pero no la ciudad, que es lo que me interesa.

Gracias, pero es que soy muy novato
texto del combo
Por: mobius
19/1/2010
var combo = document.getElementById('cbo_gerencia');
alert(combo.options[combo.options.selectedIndex].text);

ami me funciona ojala pude averte ayudado
Recoger valores de un SELECT en PHP
Por: Dani
07/4/2010
Al hacer POST de un formulario que tiene un SELECT únicamente envía el valor de la propiedad value de la opción seleccionada. Si has especificado como value en las opciones del SELECT los índices (1,2,3...) únicamente te enviará esos índices. Si quieres que te envíe el texto de la opción, busca la forma (hay varias, piensa).

Saludos.

fred_gu...
Excelente información
13/5/2010
Gracias por la información. Este artículo me ayudó a conocer un poco más acerca de las propiedades y los métodos del componente SELEC.
Lo considero muy útil a la hora de programar en JavaAcript.
Desarrollé un código en el cual al seleccionar un estado, me muestra en otra lista menú (select) los municipios que corresponden a ese estado. Espero que les sirva:

<html>
<head>
<script type="text/JavaScript">
function SeleccionarMunicipio(selObj){
if (selObj.selectedIndex == 0){
document.form1.municipio.length=1;
document.form1.municipio.selectedIndex=0;
document.form1.municipio.options[0].text="-- --";}
if (selObj.selectedIndex == 1){
document.form1.municipio.length=3;
document.form1.municipio.selectedIndex=0;
document.form1.municipio.options[0].text="Girardot";
document.form1.municipio.options[1].text="Sucre";
document.form1.municipio.options[2].text="Libertador";}
if (selObj.selectedIndex == 2){
document.form1.municipio.length=3;
document.form1.municipio.selectedIndex=0;
document.form1.municipio.options[0].text="Apure 1";
document.form1.municipio.options[1].text="Apure 2";
document.form1.municipio.options[2].text="Apure 3"; }
if (selObj.selectedIndex == 3){
document.form1.municipio.length=3;
document.form1.municipio.selectedIndex=0;
document.form1.municipio.options[0].text="Carabobo 1";
document.form1.municipio.options[1].text="Carabobo 2";
document.form1.municipio.options[2].text="Carabobo 3"; }
document.form1.caja1.value=selObj.length;
}
</script>
</head>
<body>
<form id="form1" name="form1" method="post" action="">
<label>Estado</label>
<select name="estado" id="estado" onchange="SeleccionarMunicipio(this)">
<option>Seleccione el estado</option>
<option>Aragua</option>
<option>Apure</option>
<option>Carabobo</option>
</select>
<select name="municipio" id="municipio" onchange="">
<option>-- --</option>
</select>
<input name="caja1" type="text" id="caja1" value="" />
</form>
</body>
</html>
Buen artículo
28/7/2010
Gracias por el artículo fue muy útil para mí.
If dentro de lista
Por: Miquel
04/2/2011
Como puedo condicionar las opciones de una lista? Algo así:

<select name=lista>
if valor=3 then <option value="1">Primero</option>
...
...
</select>

O sea, que sólo aparezcan las opciones en el combo en función del valor de otro campo.
Busca AJAX
Por: WarezFox
15/3/2011
Busca informacion de como obtener datos con AJAX es mejor eso te da JSON o XML y es buenazooo...
Excelente pagina Web
Por: Daniel
08/4/2011
Me gusto mucho este tema, me permitio cambiar el ejemplo, para poner el mes y que me apareciera los dias, de ese mes, cambiando el mes 31, 30 y febrero 29, esta genial, muchas gracias.

Sigan asi, ^_^
validacion de campo
Por: Frank
29/6/2011
Buenas amigos tengo un porblema que no se como resolver soy nuevo en esto de la programacion y quisiera hacer una validacion en javascript de un campo select el cual tiene 2 opciones si o no hasta alli todo bien porque logre validar que el campo no quede vacio y que el usuario seleccione si o no, lo que necesito es si el usuario selecciona la opcion no automaticamente en el campo que sigue se seleccione no aplica que se encuentra en otro campo select espero haber sido claro y puedan ayudarme gracias de antemano saludos

Manuales relacionados
Categorias relacionadas
El autor
Lectura recomendada
Compra este libro en Agapea, la librería urgente a domicilio.
Últimas noticias
Donaciones
Si piensas que te hemos ayudado y merecemos tu apoyo económico...