Foros del Web » Programando para Internet » Javascript »

Problema con validacion

Estas en el tema de Problema con validacion en el foro de Javascript en Foros del Web. estoy validando la extension del archivo a subir pero no me valida.. si le saco el [] funciona bien... Código HTML: <form name= "form" method= ...
  #1 (permalink)  
Antiguo 01/09/2006, 15:00
Avatar de giotari
Usuario no validado
 
Fecha de Ingreso: mayo-2003
Ubicación: Chile
Mensajes: 295
Antigüedad: 21 años, 6 meses
Puntos: 0
Problema con validacion

estoy validando la extension del archivo a subir pero no me valida.. si le saco el [] funciona bien...

Código HTML:
<form name="form" method="post" action="#" enctype="multipart/form-data">
<script language="javascript">
function comprueba_extension(formulario, archivo) {
	extensiones_permitidas = new Array(".gif", ".jpg", ".jpge");
	mierror = "";
	if (!archivo) {
		//Si no tengo archivo, es que no se ha seleccionado un archivo en el formulario
		mierror = "No has seleccionado ningún archivo";
	}else{
		//recupero la extensión de este nombre de archivo
		extension = (archivo.substring(archivo.lastIndexOf("."))).toLowerCase();
		//alert (extension);
		//compruebo si la extensión está entre las permitidas
		permitida = false;
		for (var i = 0; i < extensiones_permitidas.length; i++) {
			if (extensiones_permitidas[i] == extension) { 
				permitida = true;
				break;
			}
		}
		if (!permitida) {
			mierror = "Comprueba la extensión de los archivos a subir. \nSólo se pueden subir archivos con extensiones: " + extensiones_permitidas.join();
		}else{
			formulario.ok.value="Todo OK";			
			//alert ("Todo correcto. Voy a submitir el formulario.");
			//formulario.submit();
			return 1;
		}
	}
	//si estoy aqui es que no se ha podido submitir
	alert (mierror);
	formulario.ok.value="Archivos con Extensiones Invalidas";
	return 0;
}

</script>
  <input name="ok" type="text" id="ok">
  <input type="file" name="archivoupload[]" onchange="comprueba_extension(this.form, this.form.archivoupload[].value)"> 
  <input type="file" name="archivoupload[]" onchange="comprueba_extension(this.form, this.form.archivoupload[].value)"> 
  <input type="button" name="Submit" value="Enviar">
</form> 
  #2 (permalink)  
Antiguo 01/09/2006, 20:25
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años, 7 meses
Puntos: 1284
Hola:

Si quieres que un elemento de formulario lleve corchetes, desde javascript tienes que ponerlo como una cadena (corchetes incluídos) dentro de corchetes...

Bueno, trataré de resolver el galimatías con un ejemplo (tu propio caso):

onchange="comprueba_extension(this.form, this.form.archivoupload[].value)"

debería ser:

onchange="comprueba_extension(this.form, this.form['archivoupload[]'].value)"

No sé si con eso será sufi... pruébalo y nos cuentas.

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #3 (permalink)  
Antiguo 02/09/2006, 08:40
Avatar de giotari
Usuario no validado
 
Fecha de Ingreso: mayo-2003
Ubicación: Chile
Mensajes: 295
Antigüedad: 21 años, 6 meses
Puntos: 0
caricatos trate con lo que me dices pero se qued pegado en que "no ha seleccionado ningun archivo" .. probe poniedo [] en la funcion pero no me funciona...
  #4 (permalink)  
Antiguo 02/09/2006, 10:55
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años, 7 meses
Puntos: 1284
Hola:

Bueno, la verdad es que veo algo raro el código, por eso no sabía si sería suficiente... veo que es un array, así que supongo que detrás debería ir el índice:

onchange="comprueba_extension(this.form, this.form['archivoupload[]'][0].value)"...

Solo valdrían con el índice 0 y el 1. Otra cosa que no sé es si onchange te servirá en todos los navegadores... en alguno solo es aplicable a los selects (creo recordar)

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #5 (permalink)  
Antiguo 02/09/2006, 13:08
Avatar de giotari
Usuario no validado
 
Fecha de Ingreso: mayo-2003
Ubicación: Chile
Mensajes: 295
Antigüedad: 21 años, 6 meses
Puntos: 0
ejemplo listo y funcionando

ahora si funciono, gracias caricatos, dejo el ejemplo completo ya que a mas de alguien le va a servir.(ojo que me dijieron que estaba en las faqs pero no existe asi que = seria bueno incorporarlo)

Código HTML:
<form name="form" method="post" action="#" enctype="multipart/form-data">
<script language="javascript">
function comprueba_extension(formulario, archivo) {
	extensiones_permitidas = new Array(".gif", ".jpg", ".jpge");
	mierror = "";
	if (!archivo) {
		//Si no tengo archivo, es que no se ha seleccionado un archivo en el formulario
		mierror = "No has seleccionado ningún archivo";
	}else{
		//recupero la extensión de este nombre de archivo
		extension = (archivo.substring(archivo.lastIndexOf("."))).toLowerCase();
		//alert (extension);
		//compruebo si la extensión está entre las permitidas
		permitida = false;
		for (var i = 0; i < extensiones_permitidas.length; i++) {
			if (extensiones_permitidas[i] == extension) { 
				permitida = true;
				break;
			}
		}
		if (!permitida) {
			mierror = "Comprueba la extensión de los archivos a subir. \nSólo se pueden subir archivos con extensiones: " + extensiones_permitidas.join();
		}else{
			formulario.ok.value="Todo OK";			
			//alert ("Todo correcto. Voy a submitir el formulario.");
			//formulario.submit();
			return 1;
		}
	}
	//si estoy aqui es que no se ha podido submitir
	alert (mierror);
	formulario.ok.value="Archivos con Extensiones Invalidas";
	return 0;
}

</script>
  <input name="ok" type="text" id="ok">
  <input type="file" name="archivoupload[]" onchange="comprueba_extension(this.form, this.form['archivoupload[]'][0].value)"> 
  <input type="file" name="archivoupload[]" onchange="comprueba_extension(this.form, this.form['archivoupload[]'][1].value)"> 
    <input type="file" name="archivoupload[]" onchange="comprueba_extension(this.form, this.form['archivoupload[]'][2].value)"> 
	  <input type="file" name="archivoupload[]" onchange="comprueba_extension(this.form, this.form['archivoupload[]'][3].value)"> 
	    <input type="file" name="archivoupload[]" onchange="comprueba_extension(this.form, this.form['archivoupload[]'][4].value)"> 
  <input type="button" name="Submit" value="Enviar">
</form> 
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 18:38.