<label>DNI/NIF </label>
<input type="text" id="dni" onblur="validaNif(this)"></input>
<br><br>
<label>CIF </label>
<input type="text" id="cif" onblur="validaCif(this)"></input>
<br><br>
<label>NIE </label>
<input type="text" id="nie" onblur="validaNie(this)"></input>
<br><br>
<br><br>
<label>DNI/NIF </label>
<input type="text" id="dni2" onblur="validaNif2('dni2','ldni')"></input>
<input type="text" id="ldni" size="1" onblur="validaNif2('dni2','ldni')"></input>
<br><br>
<label>CIF </label>
<input type="text" id="cif2" onblur="validaCif2('cif2','lcif')"></input>
<input type="text" id="lcif" size="1" onblur="validaCif2('cif2','lcif')"></input>
<br><br>
<label>NIE </label>
<input type="text" id="nie2" onblur="validaNie2('nie2','lnie')"></input>
<input type="text" id="lnie" size="1" onblur="validaNie2('nie2','lnie')"></input>
<br><br>
<TABLE BORDER=0>
<TR>
<TD>Banco</TD>
<TD>Sucursal</TD>
<TD>DC</TD>
<TD>Cuenta</TD>
</TR>
<TR>
<TD><INPUT TYPE="text" NAME="banco" id="banco" MAXLENGTH="4" SIZE="4" onblur="validar('banco','sucursal','dc','cuenta')"></TD>
<TD><INPUT TYPE="text" NAME="sucursal" id="sucursal" MAXLENGTH="4" SIZE="4" onblur="validar('banco','sucursal','dc','cuenta')"></TD>
<TD><INPUT TYPE="text" NAME="dc" id="dc" MAXLENGTH="2" SIZE="2" onblur="validar('banco','sucursal','dc','cuenta')"></TD>
<TD><INPUT TYPE="text" NAME="cuenta" id="cuenta" MAXLENGTH="10" SIZE="10" onblur="validar('banco','sucursal','dc','cuenta')"></TD>
</TR>
</TABLE>
</FORM>
//Funcion volver
function retornar(id)
{
control=document.getElementById(id);
document.getElementById(id).value='';
//document.getElementById(id).select();
//document.getElementById(id).focus();
return;
}
//Funciones auxiliares
function IsNumeric(cadena)
{
var ValidChars = "0123456789";
var IsNumber=true;
var Char;
for (i = 0; i < cadena.length && IsNumber == true; i++)
{
Char = cadena.charAt(i);
if (ValidChars.indexOf(Char) == -1)
{
IsNumber = false;
}
}
return IsNumber;
}
// check to see if input is alphabetic
function isAlphabetic(cadena)
{
if (cadena.match(/^[a-zA-Z]+$/))
{
return true;
}
else
{
return false;
}
}
//Funciones validadoras
function validaNif(control)
{
if (control.value=="")
return;
var dni=control.value;
var numero = dni.substr(0,dni.length-1);
var let = dni.substr(dni.length-1,1);
let=let.toUpperCase();
numero = numero % 23;
var letra='TRWAGMYFPDXBNJZSQVHLCKET';
letra=letra.substring(numero,numero+1);
//alert(letra);
if (letra!=let)
{
mensaje("dni","es");
retornar(control.id);
}
}
function validaCif(control)
{
if (control.value=="")
{
return;
}
var texto=control.value;
var pares = 0;
var impares = 0;
var suma;
var ultima;
var unumero;
var uletra = new Array("J", "A", "B", "C", "D", "E", "F", "G", "H", "I");
var xxx;
texto = texto.toUpperCase();
var regular = new RegExp(/^[ABCDEFGHKLMNPQS]\d\d\d\d\d\d\d[0-9,A-J]$/g);
if (!regular.exec(texto))
{
mensaje("cif","es");
retornar(control.id);
}
ultima = texto.substr(8,1);
for (var cont = 1 ; cont < 7 ; cont ++){
xxx = (2 * parseInt(texto.substr(cont++,1))).toString() + "0";
impares += parseInt(xxx.substr(0,1)) + parseInt(xxx.substr(1,1));
pares += parseInt(texto.substr(cont,1));
}
xxx = (2 * parseInt(texto.substr(cont,1))).toString() + "0";
impares += parseInt(xxx.substr(0,1)) + parseInt(xxx.substr(1,1));
suma = (pares + impares).toString();
unumero = parseInt(suma.substr(suma.length - 1, 1));
unumero = (10 - unumero).toString();
if(unumero == 10) unumero = 0;
if ((ultima == unumero) || (ultima == uletra[unumero]))
return true;
else
{
mensaje("cif","es");
retornar(control.id);
}
}
function validaNie(control)
{
if (control.value=="")
return;
var a=control;
var temp=a.value.toUpperCase();
var cadenadni="TRWAGMYFPDXBNJZSQVHLCKET";
var v1 = new Array(0,2,4,6,8,1,3,5,7,9);
var posicion=0;
var letra=" ";
//Residente en España
if (a.value.length==9)
{
if (temp.substr(0,1)=="X")
{
var temp1=temp.substr(1,7);
posicion = temp1 % 23; /*Resto de la division entre 23 es la posicion en la cadena*/
letra = cadenadni.substring(posicion,posicion+1);
if (!/^[A-Za-z0-9]{9}$/.test(temp))
{
mensaje("nie","es");
retornar(control.id);
}
else
{
//Tiene los 9 dígitos, comprobamos si la letra esta bien
var temp1=temp.substr(1,7);
posicion = temp1 % 23; /*Resto de la division entre 23 es la posicion en la cadena*/
letra = cadenadni.charAt(posicion);
var letranie=temp.charAt(8);
if (letra != letranie){
mensaje("nie","es");
retornar(control.id);
}
}
}
else
{
mensaje("nie","es");
retornar(control.id);
}
}else if (a.value.length==14){//14 caracteres, los 2 primeros letras
var temp1=temp.substr(0,2);
if (isAlphabetic(temp1)!=true)
{
mensaje("nie","es");
retornar(control.id);
}
}
else
{
mensaje("nie","es");
retornar(control.id);
}
}
function mensaje(msg,lang)
{
if (lang=="es")
{
if(msg=="dni")
{
alert("DNI no valido");
}
else if (msg=="cif")
{
alert("CIF no valido");
}
else if (msg=="nie")
{
alert("NIE no valido");
}
else if (msg=="dc")
{
alert("El digito de control no es correcto");
}
else if (msg=="completo")
{
alert("Rellene todos los datos de la cuenta");
}
else if (msg=="formato")
{
alert("Formato incorrecto");
}
else
alert("Formato no valido");
}
}
function validar(ibanco,isucursal,idc,icuenta)
{
var banco=(document.getElementById(ibanco).value);
var sucursal=(document.getElementById(isucursal).value);
var dc=(document.getElementById(idc).value);
var cuenta=(document.getElementById(icuenta).value);
if (banco == "" || sucursal == "" || dc == "" || cuenta == ""){
return;
}
else
{
if (banco.length != 4 || sucursal.length != 4 ||
dc.length != 2 || cuenta.length != 10)
{
mensaje("completo","es");
retornar(idc);
}
else {
if (!numerico(banco) || !numerico(sucursal) ||
!numerico(dc) || !numerico(cuenta)){
mensaje("formato","es");
retornar(ibanco);
retornar(isucursal);
retornar(idc);
retornar(icuenta);
}
else {
//alert(obtenerDigito("00" + banco + sucursal));
//alert(obtenerDigito(cuenta));
if (!(obtenerDigito("00" + banco + sucursal) ==
parseInt(dc.charAt(0))) ||
!(obtenerDigito(cuenta) ==
parseInt(dc.charAt(1))))
{
mensaje("dc","es");
retornar(idc);
}
else
return;
}
}
}
}
function numerico(valor){
cad = valor.toString();
for (var i=0; i<cad.length; i++) {
var caracter = cad.charAt(i);
if (caracter<"0" || caracter>"9")
return false;
}
return true;
}
function obtenerDigito(valor){
valores = new Array(1, 2, 4, 8, 5, 10, 9, 7, 3, 6);
control = 0;
for (i=0; i<=9; i++)
control += parseInt(valor.charAt(i)) * valores[i];
control = 11 - (control % 11);
if (control == 11) control = 0;
else if (control == 10) control = 1;
return control;
}
function validaNif2(c1,c2)
{
var campo1=(document.getElementById(c1).value);
var campo2=(document.getElementById(c2).value);
if (campo1 == "" || campo2 == ""){
return;
}else{
var dni=campo1+campo2;
var numero = dni.substr(0,dni.length-1);
var let = dni.substr(dni.length-1,1);
numero = numero % 23;
var letra='TRWAGMYFPDXBNJZSQVHLCKET';
letra=letra.substring(numero,numero+1);
if (letra!=let)
{
mensaje("dni","es");
retornar(c2);
}
}
}
function validaCif2(c1,c2)
{
var campo1=(document.getElementById(c1).value);
var campo2=(document.getElementById(c2).value);
if (campo1 == "" || campo2 == ""){
return;
}else{
//alert("Cif "+campo1+" "+campo2);
var texto=campo1+campo2;
var pares = 0;
var impares = 0;
var suma;
var ultima;
var unumero;
var uletra = new Array("J", "A", "B", "C", "D", "E", "F", "G", "H", "I");
var xxx;
texto = texto.toUpperCase();
var regular = new RegExp(/^[ABCDEFGHKLMNPQS]\d\d\d\d\d\d\d[0-9,A-J]$/g);
if (!regular.exec(texto))
{
mensaje("cif","es");
retornar(control.id);
}
ultima = texto.substr(8,1);
for (var cont = 1 ; cont < 7 ; cont ++){
xxx = (2 * parseInt(texto.substr(cont++,1))).toString() + "0";
impares += parseInt(xxx.substr(0,1)) + parseInt(xxx.substr(1,1));
pares += parseInt(texto.substr(cont,1));
}
xxx = (2 * parseInt(texto.substr(cont,1))).toString() + "0";
impares += parseInt(xxx.substr(0,1)) + parseInt(xxx.substr(1,1));
suma = (pares + impares).toString();
unumero = parseInt(suma.substr(suma.length - 1, 1));
unumero = (10 - unumero).toString();
if(unumero == 10) unumero = 0;
if ((ultima == unumero) || (ultima == uletra[unumero]))
return true;
else
{
mensaje("cif","es");
retornar(c2);
}
}
}
function validaNie2(c1,c2)
{
var campo1=(document.getElementById(c1).value);
var campo2=(document.getElementById(c2).value);
if (campo1 == "" || campo2 == ""){
return;
}else{
//alert("Nie "+campo1+" "+campo2);
var a=campo1+campo2;
var temp=a.toUpperCase();
var cadenadni="TRWAGMYFPDXBNJZSQVHLCKET";
var v1 = new Array(0,2,4,6,8,1,3,5,7,9);
var posicion=0;
var letra=" ";
//Residente en España
if (a.length==9)
{
if (temp.substr(0,1)=="X")
{
var temp1=temp.substr(1,7);
posicion = temp1 % 23; /*Resto de la division entre 23 es la posicion en la cadena*/
letra = cadenadni.substring(posicion,posicion+1);
if (!/^[A-Za-z0-9]{9}$/.test(temp))
{
mensaje("nie","es");
retornar(c2);
}
else
{
//Tiene los 9 dígitos, comprobamos si la letra esta bien
var temp1=temp.substr(1,7);
posicion = temp1 % 23; /*Resto de la division entre 23 es la posicion en la cadena*/
letra = cadenadni.charAt(posicion);
var letranie=temp.charAt(8);
if (letra != letranie){
mensaje("nie","es");
retornar(c2);
}
}
}
else
{
mensaje("nie","es");
retornar(c2);
}
}else if (a.length==14){//14 caracteres, los 2 primeros letras
var temp1=temp.substr(0,2);
if (isAlphabetic(temp1)!=true)
{
mensaje("nie","es");
retornar(c2);
}
}
else
{
mensaje("nie","es");
retornar(c2);
}
}
}