Validando Cif, Nif y Nie
VictorR 29 junio, 2009
Etiquetas: javascript, tips & tricks
Del proyecto en el que trabajo en la actualidad he “sacado” estas tres piezas de código. Nada fuera de lo común, pero que sin duda sirven y servirán para una parte de las pequeñas tareas que se realizan en cada proyecto. Esto es, validar datos.
Como todo el mundo sabe, para que una aplicación, web, cosa… funcione, debe mantener un conjunto discreto de datos (esto siempre me gustó de las clases de mates), información, de una manera poco ambigua. Y por eso es necesario validar la mayoría de datos que la aplicación, web, cosa… acepta.
Básicamente hay dos maneras de validar los datos, una es en el navegador del cliente, con tecnologías tipo javascript, y la otra es en el servidor, por ejemplo con java, php… Poco más queda decir a parte de que la manera más fácil de controlar los datos y más segura es validar los datos a nivel de servidor. Ya sabes, desactivas el javascripi y te quedas sin validar.
Sim embargo, lo que os traigo aquí es javascript, ¿por qué? Porque a modo de “repositorio” quiero guardar estas “perlas” para futuros trabajos y que sirva a otros vagos de ayuda.
Validar CIF
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 = this.toUpperCase();
var regular = new RegExp(/^[ABCDEFGHKLMNPQS]\d{7}[0-9,A-J]$/g);
if (!regular.exec(texto)) return false;
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
return false;
}
Validar DNI
dni = this.toUpperCase();
numero = dni.substr(0,dni.length-1);
let = dni.substr(dni.length-1,1);
let = let.toUpperCase();
numero = numero % 23;
letra = 'TRWAGMYFPDXBNJZSQVHLCKET';
lletra = letra.charAt(numero);
return (lletra == let)
}
Validar NIE
var dni = this.toUpperCase();
var pre = dni.substr(0, 1);
var prev = '0';
if (pre == 'X')
prev = '0';
else if (pre == 'Y')
prev = '1';
else if (pre == 'Z')
prev = '2';
numero = prev + dni.substr(1,dni.length-1);
return numero.testDNI();
}
Si os dáis cuenta, las funciones extienden la clase String de javascript, esto es simplemente para que sea más facil de utilizar y lo más “orientado” a objetos posible.
Ejemplo de USO
"74185296S".testDNI(); // value: true
NOTA: que quede claro que el código no me lo he inventado yo, lo he adaptado de los recursos que se pueden encontrar en la inmensidad de internet. Lo que pasa es que no recuerdo de dónde los saqué, ni si lo saqué yo, y no puedo poner la retribución que se merece el autor/es de dichos scripts.
Actualizando a jQuery 1.3 y su evento live
VictorR 8 febrero, 2009
Etiquetas: javascript, jQuery, Soluciones
Acabo de actualizar la libreria de javascript jQuery a su última versión 1.3. A parte de que mejora su rendimiento esta versión, la principal razón para la actualización ha sido ver en persona el funcionamiento del nuevo evento “live“. Y es que:
Binds a handler to an event (like click) for all current – and future – matched element.
Traducción “libre”: cada vez que cree un elemento que coincida con un selector determinado, a este también se le asignaran los eventos deseados sin tener que hacer la misma llamada una y otra vez.
jQuery, o el "javascripi" más fácil!
VictorR 13 octubre, 2008
Etiquetas: javascript, jQuery, Soluciones
El otro día, apareció una noticia en JavaHispano en la que se acababa ponendo en duda la capacidad de jQuery. Pués bien, este post para explicar algo de jQuery que creo que hace que este framework me maraville.
Y es:
//aquí lo que quieras, que funciona
});
Estas simples líneas permiten manipular el DOM de una página web justo en el momento en que este está construido y antes de que esté completamente cargado. Que qué quiere decir esto? Esto es poder ejecutar el javascript, ya sea para manipular el DOM, cambiar estilos al vuelo, asignar eventos a los elementos del DOM, o lo que se te ocurra antes de que el evento “onload” del documento se ejecute.
Y por qué es necesario esto? Necesario, necesario puede que no lo sea. Pero es una ventaja poder ejecutar el javascript antes de cargar, sobretodo, las imágenes que la web pueda tener.
Podeis hacer la prueba. En un mismo html haced dos scripts el primero que muestre un alert como este:
y el segundo script con el siguiente código:
alert ("DOM preparado");
}
Cuál es el resultado?