Foros del Web » Programando para Internet » Javascript »

ayuda validando NIE

Estas en el tema de ayuda validando NIE en el foro de Javascript en Foros del Web. Buenas a todos, con la ayuda del foro, hice la validacion de mi campo NIF de la siguiente manera: function nif() { var dni = ...

  #1 (permalink)  
Antiguo 01/10/2008, 02:42
 
Fecha de Ingreso: enero-2002
Mensajes: 1.872
Antigüedad: 22 años, 4 meses
Puntos: 3
ayuda validando NIE

Buenas a todos,

con la ayuda del foro, hice la validacion de mi campo NIF de la siguiente manera:

function nif() {
var dni = frm.dni.value;
numero = dni.substr(0,dni.length-1);
let = dni.substr(dni.length-1,1);
numero = numero % 23;
letra='TRWAGMYFPDXBNJZSQVHLCKET';
letra=letra.substring(numero,numero+1);
if (letra!=let)
{
alert('NIF erróneo');
frm.dni.focus();
return false;
}
return true;

el problema que me encuentro es que tambien se registra gente extranjera, y claro, el NIE no es lo mismo que el NIF! (perdon por mi ignorancia pero pensaba que solo cambiaba el nombre).

podria validar al mismo tiempo el campo? hay algun codigo ya programado para ello??

saludos y gracias

ferranWEB
  #2 (permalink)  
Antiguo 01/10/2008, 05:11
Avatar de mgusdl  
Fecha de Ingreso: abril-2007
Ubicación: Malaga, España
Mensajes: 190
Antigüedad: 17 años
Puntos: 5
Respuesta: ayuda validando NIE

Buenas
hace tiempo publiqué esa funcion
Código javascript:
Ver original
  1. function checkNIF(nif)
  2.     {
  3.     if (!nif) return false;
  4.     var letras = 'TRWAGMYFPDXBNJZSQVHLCKE';
  5.     if (nif.length != 9) return false;
  6.     else {
  7.         letra = nif.substr(8, 1); letra = letra.toUpperCase();
  8.         dni = nif.substr(0, 8);
  9.         dni = dni.toUpperCase(); dni = dni.replace('X','0');
  10.         dni -= parseInt(dni/23) * 23;
  11.         if (letras.charAt(dni) != letra) return false;
  12.         else return true;
  13.         }
  14.     }
  #3 (permalink)  
Antiguo 01/10/2008, 05:28
 
Fecha de Ingreso: enero-2002
Mensajes: 1.872
Antigüedad: 22 años, 4 meses
Puntos: 3
Respuesta: ayuda validando NIE

buenas mgus,

gracias por tu respuesta. estoy intentando mandar la variable a la funcion pero no me hace nada. que hago mal?

onBlur="javascript:checkNIF(this.value)"

la idea es que al perder el focus, es decir, cambiar de campo me de el error. que hago mal?

saludos,

ferran
  #4 (permalink)  
Antiguo 01/10/2008, 05:42
Avatar de mgusdl  
Fecha de Ingreso: abril-2007
Ubicación: Malaga, España
Mensajes: 190
Antigüedad: 17 años
Puntos: 5
Mensaje Respuesta: ayuda validando NIE

En principio esta funcion sólo dice si es bueno o no, necesitarias una funcion adicional o modificar esa


Código javascript:
Ver original
  1. function checkNIF(nif)
  2.   {
  3.   if (!nif) return false;
  4.   var letras = 'TRWAGMYFPDXBNJZSQVHLCKE';
  5.   if (nif.length != 9) return false;
  6.   else
  7.     {
  8.     letra = nif.substr(8, 1); letra = letra.toUpperCase();
  9.     dni = nif.substr(0, 8);
  10.     dni = dni.toUpperCase(); dni = dni.replace('X','0');
  11.     dni -= parseInt(dni/23) * 23;
  12.     if (letras.charAt(dni) != letra) return false;
  13.     else return true;
  14.     }
  15.   }
  16. function validaNif(campo)
  17.   {
  18.   if (campo.length == 9 && !checkNIF(campo)) alert('Ese NIF no vale ni para abrir puertas');
  19.   }

Y el campo quedaría así:
Código HTML:
<input type="text" id="nif" maxlength="9" onBlur="validaNif(this.value)"> 
  #5 (permalink)  
Antiguo 01/10/2008, 07:57
 
Fecha de Ingreso: enero-2002
Mensajes: 1.872
Antigüedad: 22 años, 4 meses
Puntos: 3
Respuesta: ayuda validando NIE

gracias mgusdl,

he hecho lo que comentabas, y no me sale. te pongo el codigo:

Código:
function checkNIF(nif)
{
if (!nif) return false;

var letras = 'TRWAGMYFPDXBNJZSQVHLCKE';

if (nif.length != 9) return false;
else
{
letra = nif.substr(8, 1); letra = letra.toUpperCase();
dni = nif.substr(0, 8);
dni = dni.toUpperCase(); dni = dni.replace('X','0');
dni -= parseInt(dni/23) * 23;
if (letras.charAt(dni) != letra) return false;
else return true;
}
}

function validaNif(campo)  {  

if (campo.length == 9 && !checkNIF(campo)) 
alert('Ese NIF no vale ni para abrir puertas');  }
}
y el campo nif

Código:
<input name="nif" type="text" id="nif" value="" size=9 maxlength=9 onBlur="validaNif(this.value)">
que hago mal?
  #6 (permalink)  
Antiguo 01/10/2008, 08:02
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Exclamación Respuesta: ayuda validando NIE

El if que tienes en la función validaNIF tiene llave de cierre } pero falta una llave de apertura {. O quita la llave de cierre o agrega la llave de apertura.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #7 (permalink)  
Antiguo 01/10/2008, 08:15
Avatar de mgusdl  
Fecha de Ingreso: abril-2007
Ubicación: Malaga, España
Mensajes: 190
Antigüedad: 17 años
Puntos: 5
Respuesta: ayuda validando NIE

Pues posiblemente sea por el evento onBlur.
Podrias hacerte una funcion que pida el dato con prompt, pero esto da una alerta de seguridad en IE7. Yo en la aplicación que estoy haciendo los campos NIF, NSS y CIF los solicito mediante un panel flotante donde se valida al pulsar un boton, como puedes ver en la imagen:


Te incluyo también las funciones para hacer el panel movible (drag).

Código javascript:
Ver original
  1. function getNIF(field, field2, chk) {
  2.     var panelid = 'panelNIF';
  3.     if (!field2 && !chk)
  4.         {
  5.         if (document.getElementById(panelid)) return;
  6.         var dv = crearPanel(50, 300, panelid, 'NIF', field);
  7.         dv.appendChild(document.createElement('br'));
  8.         dv.style.textAlign = 'center';
  9.         var lbl = document.createElement('label');
  10.         lbl.setAttribute('for', 'txtNIF');
  11.         lbl.appendChild(document.createTextNode('NIF: '));
  12.         dv.appendChild(lbl);
  13.         var txtfld = document.createElement('input');
  14.         txtfld.type = 'text';
  15.         txtfld.id = 'txtNIF'
  16.         txtfld.size = 12;
  17.         txtfld.maxLength = 9;
  18.         txtfld.value = field.value;
  19.         txtfld.onkeyup = function(e) { if(window.event) key = window.event.keyCode; else if(e.which) key = e.which; if (key == 13) getNIF(document.getElementById(field.id), document.getElementById('txtNIF'), 1); }
  20.         dv.appendChild(txtfld);
  21.         var btn = document.createElement('input');
  22.         btn.type = 'button';
  23.         btn.value = 'comprueba';
  24.         btn.onclick = function() { getNIF(document.getElementById(field.id), document.getElementById('txtNIF'), 1); }
  25.         dv.appendChild(btn);
  26.         var dv2 = document.createElement('div');
  27.         dv2.id = 'msg'+panelid;
  28.         dv2.className = 'warn2';
  29.         dv.appendChild(dv2);
  30.         document.body.appendChild(dv);
  31.         txtfld.focus();
  32.         }
  33.     else
  34.         {
  35.         if (checkNIF(field2.value))
  36.             {
  37.             field.value = field2.value.toUpperCase();
  38.             cerrar(panelid);
  39.             }
  40.         else
  41.             {
  42.             document.getElementById(panelid).style.height = '60px';
  43.             document.getElementById('msg'+panelid).innerHTML = 'Numero incorrecto!';
  44.             }
  45.         }
  46.     }
  47.  
  48. function cerrar(elm) { document.body.removeChild(document.getElementById(elm)); }
  49.  
  50. function crearPanel(alto, ancho, ident, titulo, elmOrig)
  51.     {
  52.     if (!alto) alto = 100;
  53.     if (!ancho) ancho = 200;
  54.     if (!ident) ident = 'popwindow';
  55.     if (!titulo) titulo = ' ';
  56.     elmOrig = document.getElementById('meca');
  57.     var tbl = document.getElementById('tablaPpal');
  58.     var eDiv = document.createElement('div');
  59.     eDiv.id = ident;
  60.     eDiv.className = 'ventana';
  61.     eDiv.style.width = ancho + 'px';
  62.     eDiv.style.height = alto + 'px';
  63.     eDiv.style.left = (elmOrig.offsetLeft + tbl.offsetLeft  + 100) + 'px';
  64.     eDiv.style.top = (elmOrig.offsetTop + tbl.offsetTop + 100) + 'px';
  65.     sp = document.createElement('span');
  66.     sp.onclick = function() { cerrar(ident); }
  67.     sp.className = 'cerrar';
  68.     sp.appendChild(document.createTextNode("X"));
  69.     eDiv.appendChild(sp);
  70.            
  71.     var cabeza = document.createElement('div');
  72.     cabeza.className = 'cabeza';
  73.     cabeza.onmousedown = function (evt) { dragStart(evt || window.event, ident); }
  74.     cabeza.appendChild(document.createTextNode(titulo));
  75.     eDiv.appendChild(cabeza);
  76.     return eDiv;
  77.     }
  78.  
  79. /*************************************************************************/
  80. /* Copyright 2001 by Mike Hall */
  81. /* Please see [url]http://www.brainjar.com[/url] for terms of use. */
  82. /*************************************************************************/
  83. // Determine browser and version.
  84.  
  85. function Browser() {
  86.     var ua, s, i;
  87.     this.isIE = false;
  88.     this.isNS = false;
  89.     this.version = null;
  90.     ua = navigator.userAgent;
  91.     s = "MSIE";
  92.     if ((i = ua.indexOf(s)) >= 0) { this.isIE = true; this.version = parseFloat(ua.substr(i + s.length)); return; }
  93.     s = "Netscape6/";
  94.     if ((i = ua.indexOf(s)) >= 0) { this.isNS = true; this.version = parseFloat(ua.substr(i + s.length)); return;   }
  95.     // Treat any other "Gecko" browser as NS 6.1.
  96.     s = "Gecko";
  97.     if ((i = ua.indexOf(s)) >= 0) { this.isNS = true; this.version = 6.1; return; }
  98.     }
  99.  
  100. var browser = new Browser();
  101.  
  102. var dragObj = new Object();
  103. dragObj.zIndex = 0;
  104.  
  105. function dragStart(event, id) {
  106.     var el;
  107.     var x, y;
  108.     // If an element id was given, find it. Otherwise use the element being
  109.     // clicked on.
  110.     if (id) dragObj.elNode = document.getElementById(id);
  111.     else {
  112.         if (browser.isIE) dragObj.elNode = window.event.srcElement;
  113.         if (browser.isNS) dragObj.elNode = event.target;
  114.     // If this is a text node, use its parent element.
  115.         if (dragObj.elNode.nodeType == 3) dragObj.elNode = dragObj.elNode.parentNode;
  116.         }
  117.     // Get cursor position with respect to the page.
  118.     if (browser.isIE) { x = window.event.clientX + document.documentElement.scrollLeft + document.body.scrollLeft; y = window.event.clientY + document.documentElement.scrollTop + document.body.scrollTop; }
  119.     if (browser.isNS) { x = event.clientX + window.scrollX; y = event.clientY + window.scrollY; }
  120.     // Save starting positions of cursor and element.
  121.  
  122.     dragObj.cursorStartX = x;
  123.     dragObj.cursorStartY = y;
  124.     dragObj.elStartLeft = parseInt(dragObj.elNode.style.left, 10);
  125.     dragObj.elStartTop = parseInt(dragObj.elNode.style.top, 10);
  126.  
  127.     if (isNaN(dragObj.elStartLeft)) dragObj.elStartLeft = 0;
  128.     if (isNaN(dragObj.elStartTop)) dragObj.elStartTop = 0;
  129.  
  130.     // Update element's z-index.
  131.     dragObj.elNode.style.zIndex = ++dragObj.zIndex;
  132.  
  133.     // Capture mousemove and mouseup events on the page.
  134.     if (browser.isIE) { document.attachEvent("onmousemove", dragGo); document.attachEvent("onmouseup", dragStop); window.event.cancelBubble = true; window.event.returnValue = false; }
  135.     if (browser.isNS) { document.addEventListener("mousemove", dragGo, true); document.addEventListener("mouseup", dragStop, true); event.preventDefault(); }
  136.     }
  137.  
  138. function dragGo(event) {
  139.     var x, y;
  140.     // Get cursor position with respect to the page.
  141.     if (browser.isIE) { x = window.event.clientX + document.documentElement.scrollLeft + document.body.scrollLeft; y = window.event.clientY + document.documentElement.scrollTop + document.body.scrollTop; }
  142.     if (browser.isNS) { x = event.clientX + window.scrollX; y = event.clientY + window.scrollY; }
  143.     // Move drag element by the same amount the cursor has moved.
  144.     dragObj.elNode.style.left = (dragObj.elStartLeft + x - dragObj.cursorStartX) + "px";
  145.     dragObj.elNode.style.top = (dragObj.elStartTop + y - dragObj.cursorStartY) + "px";
  146.     if (browser.isIE) { window.event.cancelBubble = true; window.event.returnValue = false; }
  147.     if (browser.isNS) event.preventDefault();
  148.     }
  149.  
  150. function dragStop(event) {
  151.     // Clear the drag element global.
  152.     dragObj.elNode = null;
  153.     // Stop capturing mousemove and mouseup events.
  154.     if (browser.isIE) { document.detachEvent("onmousemove", dragGo); document.detachEvent("onmouseup", dragStop); }
  155.     if (browser.isNS) { document.removeEventListener("mousemove", dragGo, true); document.removeEventListener("mouseup", dragStop, true); }
  156.     }
Y los estilos del panel
Código css:
Ver original
  1. .ventana { position:absolute; z-index:999px; border-top:1px solid #000; border-left:1px solid #000; border-bottom:3px solid #000; border-right:3px solid #000; width:500px; top:300px; left:300px; padding:2px; padding-top:0px; background:#FFF; }
  2. .cerrar { float:right; overflow:auto; background:#F60; color:#FFF; border:1px solid #000; font-weight:bold; cursor:pointer; }
  3. .cabeza { background:#336; color:#FFF; text-align:center; font-weight:bold; }

Y el campo:
Código HTML:
<input type="text" size="12" id="nif" onBlur="getNif(this)" readonly="readonly"> 
  #8 (permalink)  
Antiguo 01/10/2008, 08:17
Avatar de mgusdl  
Fecha de Ingreso: abril-2007
Ubicación: Malaga, España
Mensajes: 190
Antigüedad: 17 años
Puntos: 5
Respuesta: ayuda validando NIE

Cita:
Iniciado por David el Grande Ver Mensaje
El if que tienes en la función validaNIF tiene llave de cierre } pero falta una llave de apertura {. O quita la llave de cierre o agrega la llave de apertura.
Al ser una única función la que se ejecuta, no necesita que el if lleve las llaves {} de apertura y cierre, en cuyo caso soba una }
  #9 (permalink)  
Antiguo 01/10/2008, 08:18
 
Fecha de Ingreso: enero-2002
Mensajes: 1.872
Antigüedad: 22 años, 4 meses
Puntos: 3
Respuesta: ayuda validando NIE

buenas david,

se me habia colado ese {, aunque ese no es el problema. tengo una funcion validar que se limita a validar los otros campos del formulario. y se cerraba al final. ahora la he cerrado (la llave) antes del codigo, y tampoco funciona...
  #10 (permalink)  
Antiguo 01/10/2008, 08:20
 
Fecha de Ingreso: enero-2002
Mensajes: 1.872
Antigüedad: 22 años, 4 meses
Puntos: 3
Respuesta: ayuda validando NIE

mgusdl...

me he perdido totalmente!!! jajaja. yo es que soy programador de php y bases de datos, y esto del javascript lo toco muy poquito... no tengo ni pajotera de lo que me apuntas!
  #11 (permalink)  
Antiguo 01/10/2008, 08:24
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: ayuda validando NIE

Cita:
Iniciado por mgusdl Ver Mensaje
Al ser una única función la que se ejecuta, no necesita que el if lleve las llaves {} de apertura y cierre, en cuyo caso soba una }
Exacto, por eso le dije que debería o quitar definitvamente la llave de cierre o agregar la llave de apertura.
Cita:
Iniciado por ferranWEB Ver Mensaje
tengo una funcion validar que se limita a validar los otros campos del formulario. y se cerraba al final. ahora la he cerrado (la llave) antes del codigo, y tampoco funciona...
No entiendo muy bien, ¿no muestra directamente el alert o muestra pero no hace lo que deseas? . Si no muestra el alert deberías mirar la Consola de Errores.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #12 (permalink)  
Antiguo 01/10/2008, 08:25
Avatar de mgusdl  
Fecha de Ingreso: abril-2007
Ubicación: Malaga, España
Mensajes: 190
Antigüedad: 17 años
Puntos: 5
Respuesta: ayuda validando NIE

Cita:
Iniciado por ferranWEB Ver Mensaje
mgusdl...

me he perdido totalmente!!! jajaja. yo es que soy programador de php y bases de datos, y esto del javascript lo toco muy poquito... no tengo ni pajotera de lo que me apuntas!
Bueno, quizás me he pasado de avanzado :P
El evento onBlur no es el más indicado para validar el campo, ya que actúa cuando este es seleccionado.
Yo creo que puedes añadir la validación del NIF/NIE a la función que valida todo el formulario y sacar el error junto al resto. Como la validación devuelve un valor booleano no es nada complicado, un simple IF y tira millas.
  #13 (permalink)  
Antiguo 01/10/2008, 08:27
 
Fecha de Ingreso: enero-2002
Mensajes: 1.872
Antigüedad: 22 años, 4 meses
Puntos: 3
Respuesta: ayuda validando NIE

david no me hace ni el alert. por eso te digo.. una cosa, en la funcion:
Código:
function validaNif(campo)  {  

if (campo.length == 9 && !checkNIF(campo)) 
alert('Ese NIF no vale ni para abrir puertas');  }
}
tengo que substituir el valor de campo por nif??

saludos
  #14 (permalink)  
Antiguo 01/10/2008, 08:27
Avatar de mgusdl  
Fecha de Ingreso: abril-2007
Ubicación: Malaga, España
Mensajes: 190
Antigüedad: 17 años
Puntos: 5
Respuesta: ayuda validando NIE

Cita:
Iniciado por David el Grande Ver Mensaje
Exacto, por eso le dije que debería o quitar definitvamente la llave de cierre o agregar la llave de apertura.
Perdón, me di cuenta tarde
  #15 (permalink)  
Antiguo 01/10/2008, 08:28
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: ayuda validando NIE

Sigue sobrando la llave de cierre .
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #16 (permalink)  
Antiguo 01/10/2008, 08:30
Avatar de mgusdl  
Fecha de Ingreso: abril-2007
Ubicación: Malaga, España
Mensajes: 190
Antigüedad: 17 años
Puntos: 5
Respuesta: ayuda validando NIE

Cita:
Iniciado por ferranWEB Ver Mensaje
david no me hace ni el alert. por eso te digo.. una cosa, en la funcion:
Código:
function validaNif(campo)  {  

if (campo.length == 9 && !checkNIF(campo)) 
alert('Ese NIF no vale ni para abrir puertas');  }
}
tengo que substituir el valor de campo por nif??

saludos
Código javascript:
Ver original
  1. function validaNif(campo)  { if (campo.length == 9 && !checkNIF(campo))
  2. alert('Ese NIF no vale ni para abrir puertas'); }
El valor del campo va en la variable "campo" que lo toma via this.value. Pienso que tu problema viene en el evento onBlur... Prueba poner onKeyUp
  #17 (permalink)  
Antiguo 01/10/2008, 10:18
 
Fecha de Ingreso: enero-2002
Mensajes: 1.872
Antigüedad: 22 años, 4 meses
Puntos: 3
Respuesta: ayuda validando NIE

sigue sin salirme.. tiene que haber algo mal en el codigo. he hecho una prueba unicamente con el campo nif, y no me funciona. os dejo el codigo completo:

Código:
<head>
<script>

function checkNIF(nif)
{
if (!nif) return false;

var letras = 'TRWAGMYFPDXBNJZSQVHLCKE';

if (nif.length != 9) return false;
else
{
letra = nif.substr(8, 1); letra = letra.toUpperCase();
dni = nif.substr(0, 8);
dni = dni.toUpperCase(); dni = dni.replace('X','0');
dni -= parseInt(dni/23) * 23;
if (letras.charAt(dni) != letra) return false;
else return true;
}
}

function validaNif(campo)  
{  

if (campo.length == 9 && !checkNIF(campo))

{ 
alert('Ese NIF no vale ni para abrir puertas');  

}
}

</script>

</head>

<body>
<form id="form1" name="form1" method="post" action="">
  <p>
    <input name="nif" type="text" id="nif" onKeyUp="validaNif(this.value)"/>
  </p>
</form>
</body>
</html>
he probado onkeyup,onblur,onfocus.. y ni nguno tira. asi que tiene que haber algo mal en la programacion
  #18 (permalink)  
Antiguo 01/10/2008, 10:23
Avatar de mgusdl  
Fecha de Ingreso: abril-2007
Ubicación: Malaga, España
Mensajes: 190
Antigüedad: 17 años
Puntos: 5
Respuesta: ayuda validando NIE

prueba con
Código:
function validaNif(campo)  
{  
if (campo.length == 9)
 {
  if (!checkNIF(campo)) 
   {
   alert('Ese NIF no vale ni para abrir puertas');
   campo = '';
   }
  else alert('NIF OK');
  }
}
  #19 (permalink)  
Antiguo 01/10/2008, 10:25
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Exclamación Respuesta: ayuda validando NIE

¿Para qué estás comprobando que la longitud del campo sea 9 para mostrar el mensaje?. Porque si pones esa comprobación cuando no sea 9 no mostrará ningún mensaje de error .
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #20 (permalink)  
Antiguo 01/10/2008, 10:28
Avatar de mgusdl  
Fecha de Ingreso: abril-2007
Ubicación: Malaga, España
Mensajes: 190
Antigüedad: 17 años
Puntos: 5
Respuesta: ayuda validando NIE

Cita:
Iniciado por David el Grande Ver Mensaje
¿Para qué estás comprobando que la longitud del campo sea 9 para mostrar el mensaje?. Porque si pones esa comprobación cuando no sea 9 no mostrará ningún mensaje de error .
Como un NIF debe tener longitud 9 lo pongo para que no compruebe si es valido o no hasta que tenga la longitud adecuada.
Yo estoy buscando que alerte cuando es incorrecto.

Si quiere que avise cuando está OK

function validaNif(campo)
{
if (checkNIF(campo)) alert('NIF OK');
}
  #21 (permalink)  
Antiguo 01/10/2008, 10:30
 
Fecha de Ingreso: enero-2002
Mensajes: 1.872
Antigüedad: 22 años, 4 meses
Puntos: 3
Respuesta: ayuda validando NIE

ahi vamos david...

ahora he hecho el caso. si quito el &&... y dejo solo ==9, el error me salta cuando es 9. pero que sentido tiene este codigo agus? no acabo de entenderlo.

yo lo que quiero es que al irse a otro campo, me verifique si es un DNI o un NIE y si es correcto... que tengo que hacer?
  #22 (permalink)  
Antiguo 01/10/2008, 10:38
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: ayuda validando NIE

Yo normalmente las validaciones las hago al enviar el formulario . Y evitar su envío en caso de que el campo es incorrecto.

En el caso de hacer con onblur habría que guardar en una variable cuando el campo sea incorrecto, y no permitir que se envíe el formulario hasta que esa variable sea verdadera.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #23 (permalink)  
Antiguo 01/10/2008, 10:45
 
Fecha de Ingreso: enero-2002
Mensajes: 1.872
Antigüedad: 22 años, 4 meses
Puntos: 3
Respuesta: ayuda validando NIE

y como lo harias tu david??? eso que comentas implementado como seria¿
  #24 (permalink)  
Antiguo 01/10/2008, 10:52
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: ayuda validando NIE

¿A cuál de las dos formas te refieres?. Si es a validar al enviar el formulario usa el evento onsubmit de este.

Si quieres hacerlo en el onblur, debes como dije, guardar en una variable Boolean el valor de retorno de checkNIF y luego en el onsubmit enviar/cancelar la acción del formulario usando esa variable.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #25 (permalink)  
Antiguo 01/10/2008, 11:17
 
Fecha de Ingreso: enero-2002
Mensajes: 1.872
Antigüedad: 22 años, 4 meses
Puntos: 3
Respuesta: ayuda validando NIE

a ver.. te cuento. yo tengo una funcion que al hacer onsubmit del formulario, me valida todos los campos tipo:

if (nombre.value == ""){}... y asi

y tenia una que me validaba que el nif fuese correcto:

Código:
 else if(!nif()) return false;

  return true;
}

function nif() {
  var dni = frm.dni.value;
  numero = dni.substr(0,dni.length-1);
  let = dni.substr(dni.length-1,1);
  numero = numero % 23;
  letra='TRWAGMYFPDXBNJZSQVHLCKET';
  letra=letra.substring(numero,numero+1);
  if (letra!=let)
  {
    alert('NIF erróneo');
    frm.dni.focus();
    return false;
  }
  return true;
y este me funciona perfecta,mente. es mas, si pongo un numero de nif que no concuerda con la letra me lo da como erroneo. cual es el problema? que ahora tb ese campo nif puede ser un NIE, con lo que la programacion del NIF no me comprueba lo del nie...

podriamos añadir que verifique al mismo tiempo si es un NIE o NIF??

saludos,

ferranWEB
  #26 (permalink)  
Antiguo 01/10/2008, 11:25
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Pregunta Respuesta: ayuda validando NIE

Seguro que se puede, pero es que en mi país no usamos eso del Nif/Nie así que yo no conozco el formato correcto como para hacer que compruebe el Nie. ¿La función que había puesto mgusdl lo hacía?.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #27 (permalink)  
Antiguo 02/10/2008, 03:48
 
Fecha de Ingreso: enero-2002
Mensajes: 1.872
Antigüedad: 22 años, 4 meses
Puntos: 3
Respuesta: ayuda validando NIE

buenas,

hagamoslo más facil. pasando de verificar si es correcto o no. creo que el NIE es una letra X + 7 caracteres + otra letra.

como hariamos para verificar que el contenido del campo tiene que ser de 9 caracteres, y tiene que tener minimo una letra?

saludos
  #28 (permalink)  
Antiguo 02/10/2008, 06:45
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
De acuerdo Respuesta: ayuda validando NIE

Según lo que leí en Wikipedia el formato sería que empiece con X o Y seguido de 7 dígitos y luego una letra. Por lo que podríamos hacer con una expresión regular:
Código javascript:
Ver original
  1. function validaNIE(value) {
  2.     niereg = /[x|X|y|Y]\d\d\d\d\d\d\d[a-zA-Z]/;
  3.     if (value.length != 9 || !niereg.test(value)) {
  4.        alert("NIE no válido");
  5.        return false;
  6.    }
  7.    return true;
  8. }
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #29 (permalink)  
Antiguo 02/10/2008, 08:00
Avatar de mgusdl  
Fecha de Ingreso: abril-2007
Ubicación: Malaga, España
Mensajes: 190
Antigüedad: 17 años
Puntos: 5
Respuesta: ayuda validando NIE

Nove si os estais complicando la vida!!
Código javascript:
Ver original
  1. function checkNIF(nif)
  2.     {
  3.     if (!nif) return false;
  4.     var letras = 'TRWAGMYFPDXBNJZSQVHLCKE';
  5.     if (nif.length != 9) return false;
  6.     else {
  7.         letra = nif.substr(8, 1); letra = letra.toUpperCase();
  8.         dni = nif.substr(0, 8);
  9.         dni = dni.toUpperCase(); dni = dni.replace('X','0');
  10.         dni -= parseInt(dni/23) * 23;
  11.         if (letras.charAt(dni) != letra) alert('NIF no valido);
  12.         else alert('NIF correcto');
  13.         }
  14.     }
  #30 (permalink)  
Antiguo 02/12/2008, 08:48
 
Fecha de Ingreso: abril-2007
Mensajes: 11
Antigüedad: 17 años, 1 mes
Puntos: 0
Respuesta: ayuda validando NIE

Hola,

Te recuerdo que la validación para el NIE cambió desde hace algunos meses. Antes únicamente iniciaba con letra X, pero ahora el NIE / NIF de personas extranjeras también inicia con la letra Y.

Te dejo un enlace donde puedes ver el código para crear un validador DNI/NIE/NIF actualizado:

www.web2.0facil.com/2008/12/02/validar-nuevo-nienif-con-letra-y-inicial/

por favor, tenemos que actualizarnos, es una vergüenza que a estas alturas una gran parte de los usuarios no puedan validar sus números de identificación y hagamos perder clientes a nuestros clientes!!

Saludos.
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:55.