Foros del Web » Programando para Internet » Javascript »

Validar un campo input file

Estas en el tema de Validar un campo input file en el foro de Javascript en Foros del Web. Hola, necesito validar un campo file para que solo me admita imagenes, mi problema es el mismo que el la FAQ 140 sin embargo el ...
  #1 (permalink)  
Antiguo 22/05/2006, 11:39
Avatar de Callaghan  
Fecha de Ingreso: enero-2006
Mensajes: 58
Antigüedad: 18 años, 3 meses
Puntos: 1
Validar un campo input file

Hola, necesito validar un campo file para que solo me admita imagenes, mi problema es el mismo que el la FAQ 140 sin embargo el script no me funciona correctamente, sale el alert que dice "Usted sólo puede subir archivos con extensiones ...." pero el campo file no toma valor "" que es lo que yo querria.
He leido por ahi que es una cuestion de seguridad o algo asi, que no se puede cambiar el value de un input file.

Hay alguna solucion a esto, hay alguna manera (esto debe ser mas html) de que al pulsar examinar, en el menu tipo de la ventana elegir archivo no aparezca Todos los tipos (*.*) y aparezca solo Imagenes (*.gif, *.jpg).

Gracias
  #2 (permalink)  
Antiguo 23/05/2006, 03:28
Avatar de JavierB
Colaborador
 
Fecha de Ingreso: febrero-2002
Ubicación: Madrid
Mensajes: 25.052
Antigüedad: 22 años, 2 meses
Puntos: 772
Hola Callaghan

El value de los input file no puede cambiarse con código. Lo que puedes hacer es borrarlo y crear uno nuevo. Prueba este ejemplo:
Código PHP:
<html>
<
head>
<
script type="text/javascript">
function 
borrar() {
  
obj document.forms[0].archi;
  
ar document.createElement('input');
  
ar.type='file';
  
ar.name='archi';
  
document.forms[0].insertBefore(ar,obj);
  
document.forms[0].removeChild(obj);
}
</script>
</head>
<body>
<form>
<input type="file" name="archi" />
<input type="button" value="Borrar" onclick="borrar()" />
</form>
</body>
</html> 
Saludos,
  #3 (permalink)  
Antiguo 26/05/2006, 05:52
Avatar de Callaghan  
Fecha de Ingreso: enero-2006
Mensajes: 58
Antigüedad: 18 años, 3 meses
Puntos: 1
Hola, gracias por responder, tengo un problema con esta instruccion

document.forms[0].insertBefore(ar,obj);

Yo creo que el navegador (iexplorer 6) no la coje y me da el siguiente error
"Argumento no valido".
¿Como lo puedo solucionar?
  #4 (permalink)  
Antiguo 26/05/2006, 08:46
Avatar de JavierB
Colaborador
 
Fecha de Ingreso: febrero-2002
Ubicación: Madrid
Mensajes: 25.052
Antigüedad: 22 años, 2 meses
Puntos: 772
Hola de nuevo.

He hecho algunos cambios en el código. Creo que no tendrás problemas con el atributo name cuando envies el formulario pero pruebalo y nos cuentas:
Código PHP:
<html>
<
head>
<
script type="text/javascript">
function 
borrar() {
  
obj document.getElementById('archi');
  
ar document.createElement('input');
  
ar.type='file';
  
ar.name='archi';
  
ar.id='archi';
  
document.forms[0].insertBefore(ar,obj);
  
document.forms[0].removeChild(obj);
}
</script>
</head>
<body>
<form>
<input type="file" name="archi" id="archi" />
<input type="button" value="Borrar" onclick="borrar()" />
</form>
</body>
</html> 
Saludos,
  #5 (permalink)  
Antiguo 15/10/2006, 03:12
 
Fecha de Ingreso: octubre-2006
Mensajes: 1
Antigüedad: 17 años, 6 meses
Puntos: 0
Otra solucion

He llegado aqui con el mismo problema, y he encontrado una solución que creo que puede servir.
Simplemente, lees el campo file, que si se deja leer, y si no es correcto borras todo el formulario, guardando previamente los valores que no deseas perder para restablacerlos después. Mas o menos:
Código:
a=document.forms[0].elements[0].value;
b=document.forms[0].elements[1].value;
c=document.forms[0].elements[2].value;
document.forms[0].reset();
document.forms[0].elements[0].value=a;
document.forms[0].elements[1].value=b;
document.forms[0].elements[2].value=c;
a mi me ha funcionado

Un saludo from spain
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 23:58.