Foros del Web » Programando para Internet » Javascript »

Validación dni en formulario

Estas en el tema de Validación dni en formulario en el foro de Javascript en Foros del Web. Hola, tengo el siguiente script para validar el dni de un formulario: Código: function validarEntero(valor){ valor = parseInt(valor) if (isNaN(valor)) { return "" }else{ return ...
  #1 (permalink)  
Antiguo 08/01/2008, 02:24
Avatar de EnCeRiO  
Fecha de Ingreso: septiembre-2004
Mensajes: 375
Antigüedad: 20 años, 3 meses
Puntos: 0
Validación dni en formulario

Hola, tengo el siguiente script para validar el dni de un formulario:
Código:
function validarEntero(valor){ 
valor = parseInt(valor) 
if (isNaN(valor)) { 
return "" 
}else{ 
return valor 
} 
}

function valida_envia(){
//valido el dni
dni = document.form.dni.value
dni = validarEntero(dni)
document.form.dni.value=dni
if (dni==""){
alert("Debe introducir su DNI")
document.form.dni.focus()
return false;
}
}
Creo que funciona bien, mi pregunta es ¿puede un dni empezar por cero? porque si pongo por ejemplo dni: 02541 me cambia a: 1377 automáticamente


Saludos

PD: no se si he puesto esto en la sección correspondiente, lo siento si me he equivocado.
__________________
Médicos Sin Fronteras
Casi todos sabemos a qué se dedican, pero no sabemos lo fácil que es hacerse socio, ¿te sobran 10 €/mes?
  #2 (permalink)  
Antiguo 09/01/2008, 02:49
Avatar de EnCeRiO  
Fecha de Ingreso: septiembre-2004
Mensajes: 375
Antigüedad: 20 años, 3 meses
Puntos: 0
Re: Validación dni en formulario

Hola, nadie sabe nada?

Saludos
__________________
Médicos Sin Fronteras
Casi todos sabemos a qué se dedican, pero no sabemos lo fácil que es hacerse socio, ¿te sobran 10 €/mes?
  #3 (permalink)  
Antiguo 09/01/2008, 11:07
 
Fecha de Ingreso: enero-2008
Mensajes: 21
Antigüedad: 17 años
Puntos: 1
Re: Validación dni en formulario

Cita:
Iniciado por EnCeRiO Ver Mensaje
Hola, tengo el siguiente script para validar el dni de un formulario:
Código:
function validarEntero(valor){ 
valor = parseInt(valor) 
if (isNaN(valor)) { 
return "" 
}else{ 
return valor 
} 
}

function valida_envia(){
//valido el dni
dni = document.form.dni.value
dni = validarEntero(dni)
document.form.dni.value=dni
if (dni==""){
alert("Debe introducir su DNI")
document.form.dni.focus()
return false;
}
}
Creo que funciona bien, mi pregunta es ¿puede un dni empezar por cero? porque si pongo por ejemplo dni: 02541 me cambia a: 1377 automáticamente


Saludos

PD: no se si he puesto esto en la sección correspondiente, lo siento si me he equivocado.
Aaaahhh EnCeRio, hablas de euros en tu firma eres español, no? pero no deberías hablar de nif?

Anyway te paso un script según DNI de Argentina que va por los 50 millones casí y los extrajeros tienen 90, creo de 100 no hay.
Perfectamente puede tener un 0 delante porque hay mucha gente de 50/60 años con documento 7.000.000 y poner 07.000.000 esta mal escrito pero es válido.

Código PHP:
<script>
function 
valida_envia(){
    
//valido el dni
    
var dni document.form.dni.value;
    var 
found = new Array();
                
//delante de los punto va una barra invertida contraria a / el problema es que este foro elimina las barras
    
found dni.match(/([0-9]{1,2}?).?([0-9]{3}).?([0-9]{3})/);//1.1
    // si sería 2 significa que el número es menor a 1.000.000.. estan todos fiambres
    
if (found.length == 3) {
        
document.form.dni.value=dni.join("");//1.2
        
return true;
    } else {
        
alert((found.length ) ?
            
"Número de DNI incorrecto" :
            
"Debe introducir su DNI")
        );
        
document.form.dni.focus()
        return 
false;
    }
}
</script> 
Avisa si te funciona, ya q usar NaN necesitas tener la misma versión que match y con join nos fuimos un poco pero bue'...

Espero que te sirva.

Saludos
  #4 (permalink)  
Antiguo 09/01/2008, 15:27
Avatar de EnCeRiO  
Fecha de Ingreso: septiembre-2004
Mensajes: 375
Antigüedad: 20 años, 3 meses
Puntos: 0
Re: Validación dni en formulario

Cita:
Iniciado por forosdelwebdr Ver Mensaje
Aaaahhh EnCeRio, hablas de euros en tu firma eres español, no? pero no deberías hablar de nif?

Anyway te paso un script según DNI de Argentina que va por los 50 millones casí y los extrajeros tienen 90, creo de 100 no hay.
Perfectamente puede tener un 0 delante porque hay mucha gente de 50/60 años con documento 7.000.000 y poner 07.000.000 esta mal escrito pero es válido.

Código PHP:
<script>
function 
valida_envia(){
    
//valido el dni
    
var dni document.form.dni.value;
    var 
found = new Array();
                
//delante de los punto va una barra invertida contraria a / el problema es que este foro elimina las barras
    
found dni.match(/([0-9]{1,2}?).?([0-9]{3}).?([0-9]{3})/);//1.1
    // si sería 2 significa que el número es menor a 1.000.000.. estan todos fiambres
    
if (found.length == 3) {
        
document.form.dni.value=dni.join("");//1.2
        
return true;
    } else {
        
alert((found.length ) ?
            
"Número de DNI incorrecto" :
            
"Debe introducir su DNI")
        );
        
document.form.dni.focus()
        return 
false;
    }
}
</script> 
Avisa si te funciona, ya q usar NaN necesitas tener la misma versión que match y con join nos fuimos un poco pero bue'...

Espero que te sirva.

Saludos
Muchas gracias por tu respuesta forosdelwebdr

Si soy español, yo lo llamo dni, nif, carnet, lo primero que me viene a la cabeza jejeje

Lo he probado y no me funciona, le doy a enviar pero no hace nada ¿?, donde dices que debo poner las barras invertidas?

Ahora lo he dejado así:


Saludos
__________________
Médicos Sin Fronteras
Casi todos sabemos a qué se dedican, pero no sabemos lo fácil que es hacerse socio, ¿te sobran 10 €/mes?
  #5 (permalink)  
Antiguo 09/01/2008, 16:35
 
Fecha de Ingreso: enero-2008
Mensajes: 21
Antigüedad: 17 años
Puntos: 1
Re: Validación dni en formulario

Cita:
Iniciado por EnCeRiO Ver Mensaje
Muchas gracias por tu respuesta forosdelwebdr

Si soy español, yo lo llamo dni, nif, carnet, lo primero que me viene a la cabeza jejeje

Lo he probado y no me funciona, le doy a enviar pero no hace nada ¿?, donde dices que debo poner las barras invertidas?

Ahora lo he dejado así:


Saludos
Código HTML:
<html>
<body>
<script> 
function valida_envia(){ 
	//valido el dni 
	var dni = document.form.dni.value;
	if (!dni || !/[0-9]+/.test(dni)) {
                       alert((dni) ? 
		"DNI incorrecto" : 
		"Debe introducir su DNI");
                       return false;
                }
	var found = new Array(); 
	//delante de los punto va una barra invertida contraria a / el problema es que este foro elimina las barras 
	found = dni.match(/([0-9]{1,2})\.?([0-9]{3})\.?([0-9]{3})/);
	// si sería 3 significa que el número es menor a 1.000.000.. estan todos fiambres 
	//disculpa olvide el match completo son 4 los resultados  
	if (found.length == 4) {
		found.splice(0,1);
		document.form.dni.value=found.join();
		return true; 
	} else { 
		alert("Número de DNI incorrecto"); 
		document.form.dni.focus() 
		return false; 
	} 
} 
</script>
<form name=form>
<input type=text name=dni>
<input type=button onclick="alert(valida_envia() ? 'Devolvio true': 'Devolvio false')" >
</form>
</body>
</html> 
Chequea esto recuerda que comprueba DNI hasta 99.999.999 con o sin puntos, si quieres que complete con puntos debes poner en la funcion join() esto join(".")

Las barras invertidas van donde las pusiste

Espero que sirva.

Saludos

Última edición por forosdelwebdr; 09/01/2008 a las 16:41
  #6 (permalink)  
Antiguo 10/01/2008, 08:28
Avatar de EnCeRiO  
Fecha de Ingreso: septiembre-2004
Mensajes: 375
Antigüedad: 20 años, 3 meses
Puntos: 0
Re: Validación dni en formulario

Cita:
Iniciado por forosdelwebdr Ver Mensaje
Código HTML:
<html>
<body>
<script> 
function valida_envia(){ 
	//valido el dni 
	var dni = document.form.dni.value;
	if (!dni || !/[0-9]+/.test(dni)) {
                       alert((dni) ? 
		"DNI incorrecto" : 
		"Debe introducir su DNI");
                       return false;
                }
	var found = new Array(); 
	//delante de los punto va una barra invertida contraria a / el problema es que este foro elimina las barras 
	found = dni.match(/([0-9]{1,2})\.?([0-9]{3})\.?([0-9]{3})/);
	// si sería 3 significa que el número es menor a 1.000.000.. estan todos fiambres 
	//disculpa olvide el match completo son 4 los resultados  
	if (found.length == 4) {
		found.splice(0,1);
		document.form.dni.value=found.join();
		return true; 
	} else { 
		alert("Número de DNI incorrecto"); 
		document.form.dni.focus() 
		return false; 
	} 
} 
</script>
<form name=form>
<input type=text name=dni>
<input type=button onclick="alert(valida_envia() ? 'Devolvio true': 'Devolvio false')" >
</form>
</body>
</html> 
Chequea esto recuerda que comprueba DNI hasta 99.999.999 con o sin puntos, si quieres que complete con puntos debes poner en la funcion join() esto join(".")

Las barras invertidas van donde las pusiste

Espero que sirva.

Saludos
Muchisimas gracias forosdelwebdr

Saludos
__________________
Médicos Sin Fronteras
Casi todos sabemos a qué se dedican, pero no sabemos lo fácil que es hacerse socio, ¿te sobran 10 €/mes?
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:18.