Foros del Web » Programando para Internet » Javascript »

Algo falla en mi select

Estas en el tema de Algo falla en mi select en el foro de Javascript en Foros del Web. El script sencillito es este: Código: <form action="upload.php" name="formulario" method="post" enctype="multipart/form-data"> <SCRIPT language="JavaScript" type="text/javascript"> document.write("<label>Numero de Imagenes <select name=numero size=1 onSelect:imagenes()>"); for (var i = ...
  #1 (permalink)  
Antiguo 08/12/2007, 13:38
 
Fecha de Ingreso: junio-2006
Mensajes: 270
Antigüedad: 17 años, 10 meses
Puntos: 0
Algo falla en mi select

El script sencillito es este:
Código:
<form action="upload.php" name="formulario" method="post" enctype="multipart/form-data">
<SCRIPT language="JavaScript" type="text/javascript">
document.write("<label>Numero de Imagenes <select name=numero size=1 onSelect:imagenes()>");
for (var i = 1; i < 6; i++) {
	document.write("<option value=" + i + ">" + i);
}
document.write("</select></label>");
function imagenes()  {
	var n = formulario.numero.options[formulario.numero.selectedIndex].value

	for (var i = 1; i <= n; i++) {
	document.write("<p><label>Imagen Mediana " + i + " <input type=file name=mediana" + i + "></label></p>");
	}
}
</form>
Lo que hago es sacar tantos forms para subir archivos como especifique el usuario (hasta 5 como maximo). El problema es que una vez seleccionado no ocurre nada... He intentado poniendo onChange: y tampoco. Hay algo mal y no se me ocurre.
Muchas gracias
  #2 (permalink)  
Antiguo 08/12/2007, 14:07
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Re: Algo falla en mi select

Hola:

Debes usar onchange, y no valen 2 puntos, sino la igualdad:

onchange="imagenes()"

Pero ten cuidado al usar document.write()... prohibido con la página ya cargada... seguramente sea mejor usar innerHTML

saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #3 (permalink)  
Antiguo 08/12/2007, 14:28
 
Fecha de Ingreso: junio-2006
Mensajes: 270
Antigüedad: 17 años, 10 meses
Puntos: 0
Re: Algo falla en mi select

Hola.
Muchas gracias. Aunque un apunte:
Cita:
prohibido con la página ya cargada
Parece que prohibido no, pero recarga la pagina con el nuevo codigo, muy molesto porque los demas formularios pueden borrarse.
Cita:
seguramente sea mejor usar innerHTML
Pues has dado en el clavo. Aunque tiene su complicacion...
  #4 (permalink)  
Antiguo 08/12/2007, 17:46
Avatar de JoseTejada  
Fecha de Ingreso: diciembre-2007
Ubicación: Peru.Lima.Cercado.MDuarez.Granaderos172
Mensajes: 218
Antigüedad: 16 años, 4 meses
Puntos: 11
Re: Algo falla en mi select

ehmm :S, es primera vez q me atrevo a dar una respuesta ya q no soy muy experto en el JavaScript, pero espero que esto ayude...:
<form name="formulario">
<script language="JavaScript" type="text/javascript">
document.write("<label>Numero de Imagenes <select name=numero size=1 onChange='imagenes()'>");
document.write("<option selected></option>");
for (var i = 1; i < 6; i++) {
document.write("<option value=" + i + ">" + i +"</option>");
}
document.write("</select></label>");
function imagenes() {
var n = formulario.numero.options[formulario.numero.selectedIndex].value
texto = "";
for (var i = 1; i <= n; i++) {
texto += "<p><label>Imagen Mediana " + i + " <input type=file name=mediana" + i +

"></label></p>";
}
aqui.innerHTML = texto;

}
</script>
<div id="aqui"></div>
  #5 (permalink)  
Antiguo 08/12/2007, 19:28
 
Fecha de Ingreso: junio-2006
Mensajes: 270
Antigüedad: 17 años, 10 meses
Puntos: 0
Re: Algo falla en mi select

Hola.
Gracias JoseTejada.
Tu script no me iba, pero todo parecia correcto. Hasta que me di que es lo que hacia que no fuera:
Código:
var n = formulario.numero.options[formulario.numero.selectedIndex]
Y habia que ponerlo con document. delante de formulario:
Código:
document.formulario.numero.options[document.formulario.numero.selectedIndex
Pero me has sacado de un apuro. Yo no he tratado nada con javascript, y todavia no me he acostumbrado.

Por cierto, el script final que funciona, por si alguien quiere poner algo como lo que yo hago, es este:
Código:
<form action="upload.php" method="post" name="formulario" enctype="multipart/form-data">
<SCRIPT language="JavaScript" type="text/javascript">
document.write('<label>Numero de Imagenes <select name="numero" size=1 onChange="imagenes()">');
document.write("<option selected></option>");
for (var i = 1; i < 6; i++) {
	document.write("<option value=" + i + ">" + i + "</option>");
}
document.write("</select></label>");
function imagenes()  {
var n = document.formulario.numero.options[document.formulario.numero.selectedIndex].value
texto = "";
for (var i = 1; i <= n; i++) {
texto += "<p><label>Imagen Mediana " + i + " <input type=file name=mediana" + i +"></label></p>";
}
document.getElementById('aqui').innerHTML = texto;

}
</script>
<div id='aqui'></div>
<p><input type="submit" value="Subir"></p>
</form>
Supongo que habrá formas mas elegantes de ahcerlo, pero bueno, esto por lo menos funciona de maravilla.

Última edición por darkxer0x; 08/12/2007 a las 19:38
  #6 (permalink)  
Antiguo 09/12/2007, 01:33
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Re: Algo falla en mi select

Hola:

Tal vez intentar algo más "elegante" puede añadir una complejidad innecesaria, aunque con el DOM no sería tan difícil...

Código:
for (var i = 1; i <= n; i++) {
//texto += "<p><label>Imagen Mediana " + i + " <input type=file name=mediana" + i +"></label></p>";
p = document.createElement("p");
l = document.createElement("label");
l.appendChild(document.createTextNode("Imagen Mediana " + i + " "));
inp = document.createElement("input");
inp.type = "file";
inp.name = "mediana + i;
l.appendChild(inp);
p.appendChild(l);
document.getElementById("aqui").appendChild(p);
}
//document.getElementById('aqui').innerHTML = texto;
No sé si es más elegante, pero es el uso estandar del DOM, así que creo que como lo tienes está muy bien.

Lo único que creo que puedes simplificar es esta línea:

Código:
var n = document.formulario.numero.options[document.formulario.numero.selectedIndex].value
Por algo así:
Código:
var n = document.formulario.numero.value
Incluso podrías inicializar n en el propio bucle:
Código:
for (var i = 1, n = document.formulario.numero.value; i <= n; i++)
Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
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 17:30.