Foros del Web » Programando para Internet » Javascript »

Rellenar un select

Estas en el tema de Rellenar un select en el foro de Javascript en Foros del Web. Dispongo de un select el cual soy capaz de rellenar con los datos contenidos en un array, pero cuando quiero ver el valor de la ...
  #1 (permalink)  
Antiguo 25/11/2002, 06:29
Avatar de Nizam  
Fecha de Ingreso: abril-2002
Ubicación: Madrid
Mensajes: 78
Antigüedad: 22 años, 1 mes
Puntos: 0
Rellenar un select

Dispongo de un select el cual soy capaz de rellenar con los datos contenidos en un array, pero cuando quiero ver el valor de la seleccion indica que esta en blanco, es decir la propiedad value no se rellena.

A ver si sois capaces de ayudarme.

He intentado de todo pero no consigo rellenar el valor. Os dejo el codigo que al menos me rellena el select.

pp: nombre del form
D1: nombre del select
menu: nombre del array que le paso a la funcion

function rellena(menu)
{
/ var options = pp.D1.options; /
for (var i = pp.D1.length - 1; i > 0; i--)
{
pp.D1[i] = null;
}

for (var j = 0; j < menu.length; j++)
{
pp.D1[j] = Option(menu[j]);
}
pp.D1[0].selected = true;
}

Muchas gracias.
  #2 (permalink)  
Antiguo 25/11/2002, 09:32
Avatar de Kaopectate
Colaborador
 
Fecha de Ingreso: diciembre-2001
Ubicación: Curaçao (Antillas Holandesas)
Mensajes: 3.179
Antigüedad: 22 años, 4 meses
Puntos: 38
Revisa este ejemplo:

Código PHP:
<html>
 <
head>
  <
script language="JavaScript">
   function 
cambia(oCntrl){
    var 
txtVal parseInt(document.frm.txt.value);
    
oCntrl.selectedIndex txtVal;
   }
  
</script>
 </head>
 <body>
  <form name="frm">
   <table border="0">
    <tr>
     <td>
      Opción:
     </td>
     <td>
      <input type="text" name="txt" onkeyup="cambia(document.frm.ciudad)">
     </td>
     <td>
      <select name="ciudad">
       <option value="0">Cero</option>
       <option value="1">Uno</option>
       <option value="2">Dos</option>
       <option value="3">Tres</option>
       <option value="4">Cuatro</option>
       <option value="5">Cinco</option>
       <option value="6">Seis</option>
      </select>
     </td>
    </tr>
   </table>
  </form>
 </body>
</html> 
Saludos.
  #3 (permalink)  
Antiguo 25/11/2002, 13:39
Avatar de Beakdan  
Fecha de Ingreso: diciembre-2001
Ubicación: Monterrey, Nuevo León
Mensajes: 433
Antigüedad: 22 años, 4 meses
Puntos: 7
Nizam:
Bueno, yo también uso el objeto Option cuando quiero rellenar un select, ya que es uno de los objetos más útiles en cuanto a la manipulación de estos. Pero en tu caso no funciona, porque estás especificando el texto que se mostrará, pero no el value de la opción. La sintaxis para usarlo es:
Código:
new Option(texto_a_mostrar, valor);
Cuando el value y el texto a mostrar son distintos, lo anterior es la manera correcta de usarlo.

Código:
function rellena(menu){
	//Esta parte la usas para eliminar el contenido de tu select.
	
	for (var i = pp.D1.length - 1; i > 0; i--){ 
		pp.D1[i] = null;
	}
	
	//aquí rellenas, pero hice una pequeña modificación.
	
	for (var j=0; j<menu.length; j++){
		
		//Creamos un nuevo objeto Option que será asignado
		//a una de las posiciones del array Options del select
		//esto podría hacerse en un sólo paso, pero prefiero
		//ponerlo de este modo para que el código sea más claro.
		//Suponiendo que el value sea = al texto mostrado:
		
		var tempOption = new Option(menu[j],menu[j]);
		pp.D1.options[j] = tempOption;
	}
	pp.D1[0].selected = true;
}
Obviamente, si fueran distintos el value del text, pasaría dos arrays como argumento de la función, o un array de array's.
Pero si el texto es igual al value, suelo ahorrarme la molestia de poner este último, y tomo el valor que necesito de la siguiente forma.

Código:
valor_del_texto = pp.D1.options[pp.D1.selectedIndex].text;
Saludos. Espero que la explicación no haya sido demasiado larga. Suerte.
  #4 (permalink)  
Antiguo 27/11/2002, 09:49
Avatar de Nizam  
Fecha de Ingreso: abril-2002
Ubicación: Madrid
Mensajes: 78
Antigüedad: 22 años, 1 mes
Puntos: 0
Muchas gracias.

Desconocia que la sintaxis fuera esa.

Era justo lo que necesitaba.


Un saludo
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:28.