miércoles, 12 de mayo de 2010

Objetos select y option en javascript

Vamos a estudiar el tratamiento del listbox en javascript. Lo hacemos a través de los objetos select y option.
El objeto select representa la etiqueta <select> de HTML y el objeto option a la etiqueta <option>

Propiedades del objeto select

PropiedadSignificado
formReferencia al formulario que contiene al objeto.
lengthMantiene el número de opciones definidas en el elemento select
nameMantiene el valor del atributo name (nombre asignado al elemento select)
optionsArray que mantiene una entrada por cada opción del elemento select, en el
mismo orden en el que aparecen en el código HTML. Este atributo tiene además
las propiedades descritas en el objeto option.
selectedIndexMantiene el valor del índice de la opción actualmente seleccionada
(o el valor del índice de la primera opción marcada si se han
seleccionado varias opciones).
typeMantiene el valor del atributo type.

Métodos del objeto select

MétodoSignificado
blur()Elimina el foco del objeto select.
focus()Asigna el foco al objeto select.

Eventos del objeto select

EventoSignificado
onBlurEl evento se produce al perder el foco
onChangeEl evento se produce cuando se pierde el foco después de haber sido
alterado
onFocusEl evento se produce al obtener el foco

Constructor del objeto option

new Option([texto[, valor[, seleccionDefecto[, seleccion]]]])
texto que se visualiza en la lista
valor que se almacena en la opción sin visualizarse
seleccionDefecto cuando es true representa el elemento seleccionado por defecto
seleccion representa los elementos seleccionados en un select múltiple

Propiedades del objeto option

PropiedadSignificado
defaultSelectedIndica si la opción debe estar seleccionada por defecto.
selectedIndica si la opción está seleccionada o no.
textMantiene el texto de la opción.
valueMantiene el valor del atributo value de la opción (valor que se envía asociado al
elemento option cuando se manda el formulario al servidor).

Para completar el estudio de estos elementos realizaremos un pequeño ejercicio de ejemplo que
trate las características más significativas de su uso.
En el código HTML que se muestra a continuación mostramos todos los elementos del formulario.
Además del listbox (select) tenemos dos cuadros de texto que nos permitan introducir el texto
y el valor de un nuevo elemento de la lista y los botones que permiten introducir y eliminar un item.


<body onload="Cargar()">
    <div id="contenidos">
   <div id="lista">
  <select id="listbox" onchange="Seleccionar()">
  </select>
   </div>
   <div id="textos">
  Texto <input type="text" id="texto" /><br />
  Valor <input type="text" id="valor" /><br /> 
   </div>
   <div id="boton">
  <input type="button" value="añadir" 
    id="botonAgregar" onclick="Agregar()" /><br />
  <input type="button" value="eliminar" 
    id="botonEliminar" onclick="Eliminar()" />
   </div>
    </div>
  </body>
 
Usando el constructor de option cargamos los valores iniciales al cargar la página
function Cargar(){
  var lista=document.getElementById("listbox");
  lista.options.add(new Option("to be","ser, estar"));
  lista.options.add(new Option("to have",
    "haber, tener"));
  lista.options.add(new Option("to tell","contar"));
 }
 
Cuando seleccionamos un elemento se produce el evento onChange y en ese momento
vamos a visualizar en un cuadro alert el índice del elemento seleccionado, su texto y
su valor.
function Seleccionar(){
 var lista=document.getElementById("listbox");
 alert("elemento seleccionado= "
   +lista.selectedIndex+"\n"+
   "texto= "+lista.options[lista.selectedIndex].text+
   "\n"+"valor= "+
   lista.options[lista.selectedIndex].value);
  }
 

Al pulsar el botón añadir se agrega un nuevo item a la lista.

function Agregar(){
 var lista=document.getElementById("listbox");
 var texto=document.getElementById("texto");
 var valor=document.getElementById("valor");
 lista.options.add(new Option(texto.value,valor.value));
  }
 

Y al pulsarel botón eliminar quitamos de la lista el item seleccionado.

function Eliminar(){
 var lista=document.getElementById("listbox");
 lista.options[lista.selectedIndex]=null;
  }
 

Para bajarse el ejercicio completo pulse aquí

No hay comentarios:

Publicar un comentario