Foros del Web » Programando para Internet » Javascript »

¿Cómo validar longitud del nombre de un fichero en un INPUT TYPE='

Estas en el tema de ¿Cómo validar longitud del nombre de un fichero en un INPUT TYPE=' en el foro de Javascript en Foros del Web. Ante todo gracias, mi problema es el siguiente, necesito limitar el tamaño del nombre del fichero a 50 caracteres y aparte que este nombre no ...
  #1 (permalink)  
Antiguo 06/10/2006, 05:50
 
Fecha de Ingreso: julio-2006
Ubicación: sevilla
Mensajes: 251
Antigüedad: 17 años, 10 meses
Puntos: 5
¿Cómo validar longitud del nombre de un fichero en un INPUT TYPE='

Ante todo gracias, mi problema es el siguiente, necesito limitar el tamaño del nombre del fichero a 50 caracteres y aparte que este nombre no contega ni espacios en blanco a la izquierda, derecha o dentro del mismo. Hos dejo mi código para que veais por donde vo aunque no doy con la tecla ni mucho menos.

recoge el valor del type=file
function tipo(tel) {
var cont;
var conti;
var tip= tel.length;
var t=tip-3;
var ex=tel.substr(t,3);
var ruta=document.fcurso.archivo.value;

compruebo que tenga las extenciones que pido

if (ex=="rtf" || ex=="odt" || ex=="pdf") {
}else{
alert ("El tipo de archivo no es valido, recuerde solo .rtf , .odt o .pdf ");
document.fcurso.archivo.value="";
return false;
}

supuestamente con esto busco que el nombre no tenga mas de 50
caracteres
conti=50;
while (cont > 0) {
if (tel.charAt(cont) == "'\'") {
if (conti>50){
tamano = false;
{
}
conti--;
}

if (tamano == false) {
alert ("El nombre del archivo tiene más de 50 carácteres.");
document.fcurso.archivo.value="";
return false;
}else{
}

con esto compruebo ke en los primeros 50 caraceres
empezando por el final no contenga espacios en blanco
cont=tip;
while (cont <= (tip-50)) {
if (tel.charAt(cont) == " ") {
espacios = false;
}
cont--;
}

if (espacios != false) {
}else{
alert ("El nombre del archivo contiene espacios en blanco. " + ruta);
document.fcurso.archivo.value="";
return false;
}

}

no hay una forma mas facil de simplemente coger el nombre del fichero y no la ruta completa?
  #2 (permalink)  
Antiguo 06/10/2006, 06:00
Avatar de djreficul  
Fecha de Ingreso: julio-2006
Ubicación: Cork
Mensajes: 672
Antigüedad: 17 años, 10 meses
Puntos: 0
Cuando obtengas la ruta completa haz un split por el caracter "\" ya q la direccion q pillas será del tipo "c:\ruta\carpeta\otracarpeta\archivo.extension "

De esta forma te lo divide en un array y pillando el ultimo elemento tendrás el nombre del archivo nada más.

Saludos.
__________________
La muerte es un camino que todos debemos recorrer...
  #3 (permalink)  
Antiguo 06/10/2006, 06:05
 
Fecha de Ingreso: julio-2006
Ubicación: sevilla
Mensajes: 251
Antigüedad: 17 años, 10 meses
Puntos: 5
Sorprendido me he de la facil

Gracias por la respuestan rapida no conocia esa función ahora mismo lo pruebo y te comento
  #4 (permalink)  
Antiguo 06/10/2006, 06:07
 
Fecha de Ingreso: julio-2006
Ubicación: sevilla
Mensajes: 251
Antigüedad: 17 años, 10 meses
Puntos: 5
POr cierto como se el tamaño de un array
  #5 (permalink)  
Antiguo 06/10/2006, 06:12
Avatar de djreficul  
Fecha de Ingreso: julio-2006
Ubicación: Cork
Mensajes: 672
Antigüedad: 17 años, 10 meses
Puntos: 0
Igual q los caracteres con length.

Saludos.
__________________
La muerte es un camino que todos debemos recorrer...
  #6 (permalink)  
Antiguo 06/10/2006, 06:32
 
Fecha de Ingreso: julio-2006
Ubicación: sevilla
Mensajes: 251
Antigüedad: 17 años, 10 meses
Puntos: 5
siento molestarde nuevo pero no se que hago mal.

function tipo(tel) {
var tamano;
var conti;
var tip= tel.length;
var t=tip-3;
var ex=tel.substr(t,3);
var ruta=document.fcurso.archivo.value;
var aruta=ruta.split("\");
var tam= aruta.length;

if (ex=="rtf" || ex=="odt" || ex=="pdf") {
}else{
alert ("El tipo de archivo no es valido, recuerde solo .rtf , .odt o .pdf ");
document.fcurso.archivo.value="";
return false;
}


tamano=aruta[tam].length;

if (tamano >50) {

alert ("El nombre del archivo tiene más de 50 carácteres.");
document.fcurso.archivo.value="";
return false;
}else{
}


cont=0;
while (cont <= tamano)) {
if (tel.charAt(cont) == " ") {
espacios = false;
}
cont++;
}

if (espacios != false) {
}else{
alert ("El nombre del archivo contiene espacios en blanco. " + ruta);
document.fcurso.archivo.value="";
return false;
}

}
  #7 (permalink)  
Antiguo 06/10/2006, 09:48
Avatar de djreficul  
Fecha de Ingreso: julio-2006
Ubicación: Cork
Mensajes: 672
Antigüedad: 17 años, 10 meses
Puntos: 0
Haz alerts o document.write o algo para saber el valor de la variable tam a ver si te esta haciendo bien el split o no... no toy seguro si habra q hacer lo mismo q en PHP y escapar la \ usando \\ en su lugar.

Ademas, te recuerdo q los arrays empiezan en el 0. Asi q tamano=aruta[tam].length; es un elemento q no existe. tamano=aruta[(tam-1)].length; pillaría el último elemento.

Otra cosa, aunque permitas las extensiones q permites hay algunas q tiene mas de 3 letras. Es mejor usar lastIndexof ("."), creo q es asi, para buscar el ultimo punto q determine la extension.

X el resto del código no veo nada mal aunque ahora mismo acabo de llegar al curro y no estoy aun al 100%.

Saludos.
__________________
La muerte es un camino que todos debemos recorrer...
  #8 (permalink)  
Antiguo 06/10/2006, 10:31
 
Fecha de Ingreso: julio-2006
Ubicación: sevilla
Mensajes: 251
Antigüedad: 17 años, 10 meses
Puntos: 5
como tu bien decias habia que escapar los con \\ cuando termine la funcion de comprobaion la subire al foro, me parece raro que no este documentado bien el split, en fin espero que con este codigo que subire en pronto aporte algo a la comunidad
  #9 (permalink)  
Antiguo 06/10/2006, 11:29
Avatar de djreficul  
Fecha de Ingreso: julio-2006
Ubicación: Cork
Mensajes: 672
Antigüedad: 17 años, 10 meses
Puntos: 0
Es mejor q pongas las respuestas aquí pues yo me hallo trabajando y no siempre podria responder. Tal como yo te lo he puesto:

tamano=aruta[(tam-1)]; //Sin los paréntesis es muy posible q como te dice salga undefined. Tambien puedes definir una variable:

ultimo=tam-1;
tamano=aruta[ultimo]; //Asi tienes el valor. NO es un campo de formulario o elemento web asi q no requiere de .value

Saludos.
__________________
La muerte es un camino que todos debemos recorrer...
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 19:32.