Ver Mensaje Individual
  #24 (permalink)  
Antiguo 21/01/2008, 08:41
Avatar de kvoloj
kvoloj
 
Fecha de Ingreso: agosto-2003
Mensajes: 124
Antigüedad: 20 años, 9 meses
Puntos: 1
Exclamación Re: Validar nif/cif

Hola Carlitos:

He tratado de quitar la validación del nif, ya que solo necesito el cif y me da error.
El script funciona tal cual, pero cuando modifico algo no funciona.

Me podrías ayudar a variar tu código para que sólo se valide el cif?

Muchas Gracias

Koldo





Cita:
Iniciado por Carlitos Ver Mensaje
No había vuelto a ver este mensaje.

Interesante.

Bueno, aquí dejo el código que he hecho yo. Gracias a la documentación aportada por KarlanKas. No sabía cómo se calculaba el cif.
Código:
	
<script>
/*******************************
 Validación del nif/nif. Por Carlitos. [email protected]
 Si usas este script, deja intactas estas líneas (créditos). Vale?
 También te agradecería un e-mail con tus comentarios.
 Idea original de validación de cif de KarlanKas
*******************************/



function cif(cif)
{
par = 0
non = 0
letras="ABCDEFGHKLMNPQS"
let=cif.charAt(0)

if (!isNaN(let))
  {
  nif=cif
  validar(nif)
  return false
  }

if (cif.length!=9)
  {
  alert('El Cif debe tener 9 dígitos')
  document.formulario.nif.focus()
  return false
  }

if (letras.indexOf(let.toUpperCase())==-1)
  {
  alert("El comienzo del Cif no es válido")
  document.formulario.nif.focus()
  return false
  }

for (zz=2;zz<8;zz+=2)
  {
  par = par+parseInt(cif.charAt(zz))
  }

for (zz=1;zz<9;zz+=2)
  {
  nn = 2*parseInt(cif.charAt(zz))
  if (nn > 9) nn = 1+(nn-10)
  non = non+nn
}

parcial = par + non

control = (10 - ( parcial % 10))

if (control!=cif.charAt(8))
  {
  alert("El Cif no es válido")
  document.formulario.nif.focus()
  return false
  }
alert("El Cif es válido")
}

function validar(abc)
{
dni=abc.substring(0,abc.length-1)
let=abc.charAt(abc.length-1)
if (!isNaN(let))
 {
  alert('Falta la letra')
  document.formulario.nif.focus()
  return false
 }
else
 {
  cadena="TRWAGMYFPDXBNJZSQVHLCKET"
  posicion = dni % 23
  letra = cadena.substring(posicion,posicion+1)
  if (letra!=let.toUpperCase())
   {
    alert("Nif no válido")
    document.formulario.nif.focus()
    return false
   }
 }
alert("Nif válido")
}


</script>

<body>
<form name="formulario">
NIF/CIF: <input type="text" name="nif" onblur="cif(this.value)"> 
</form>

</body>
Pruébalo y me cuentas.