¿Alguien tiene una biblioteca o un fragmento de JavaScript para validar el dígito de verificación de las tarjetas de crédito antes de que el usuario acceda a Enviar?Validación del lado del cliente de las tarjetas de crédito
Respuesta
El jQuery Validation Plugin tiene un method para validar números de tarjetas de crédito.
Hay otras secuencias de comandos específicos:
mayoría de ellos utilizan la Luhn algorithm.
Puede utilizar esta función si no está utilizando el complemento jQuery. Se basa en el algoritmo de Luhn y es tolerante con los espacios o guiones, por lo que debería funcionar para la mayoría de los casos de ingreso de datos para los que lo necesitaría.
http://af-design.com/blog/2010/08/18/validating-credit-card-numbers/
Probablemente OP ni siquiera siguen este hilo más, pero esto puede ser útil para otra persona:
http://jquerycreditcardvalidator.com
comprueba el tipo de tarjeta, valida su longitud y comprueba si hay mod 10 con el algoritmo Luhn.
Puede utilizar este fragmento para validar números de tarjeta de 16 dígitos con Luhn algorithm:
function validateCardNumber(number) {
var regex = new RegExp("^[0-9]{16}$");
if (!regex.test(number))
return false;
return luhnCheck(number);
}
function luhnCheck(val) {
var sum = 0;
for (var i = 0; i < val.length; i++) {
var intVal = parseInt(val.substr(i, 1));
if (i % 2 == 0) {
intVal *= 2;
if (intVal > 9) {
intVal = 1 + (intVal % 10);
}
}
sum += intVal;
}
return (sum % 10) == 0;
}
Luhn formula es el algoritmo más popular en la validación de tarjetas de crédito. Y no tengas tanto miedo de la palabra algorithm
que estás buscando una biblioteca. Es increíblemente fácil de entender. Por la descripción de Wikipedia, este algoritmo puede ser dividir en 3 etapas:
- desde el dígito más a la derecha, que es el dígito de control, mueve a la izquierda, el doble del valor de cada segundo dígito; si el producto de esta operación de duplicación es mayor que 9 (p. ej., 8 × 2 = 16), sume los dígitos de los productos (p. ej., 16: 1 + 6 = 7, 18: 1 + 8 = 9).
- Tome la suma de todos los dígitos.
- Si el módulo total 10 es igual a 0 (si el total termina en cero), entonces el número es válido según la fórmula de Luhn; de lo contrario, no es válido.
Aquí está mi borrador de trabajo.
function luhn(anum){
anum = anum+'';
var sum = 0,
max = anum.length - 1;
//From the rightmost digit, which is the check digit, moving left
for(var j=max;j>=0;j--){
var digit = parseInt(anum[j]);
//Take the sum of all the digits
if((max - j) & 1){
//double the value of every second digit
var add = digit * 2;
//if the product of this doubling operation is greater than 9 ,
//then sum the digits of the products
sum += add < 10 ? add : 1 + add % 10;
}else{
sum += digit;
}
}
//If the total modulo 10 is equal to 0 (if the total ends in zero)
//then the number is valid according to the Luhn formula;else it is not valid.
return sum % 10 === 0;
}
luhn(79927398713) -> true
algoritmo de Luhn (también conocido como Luhn formula) es útil para validar una variedad de números de identificación (por ejemplo números de tarjetas de crédito, IMEI).
Omito la explicación del algoritmo, ya que ya ha sido expuesto por los demás, pero si necesita la más rápida implementación de JavaScript, se puede ver que here.
En pocas palabras ...
function luhn(array) {
return function (number) {
let len = number ? number.length : 0,
bit = 1,
sum = 0;
while (len--) {
sum += !(bit ^= 1) ? parseInt(number[len], 10) : array[number[len]];
}
return sum % 10 === 0 && sum > 0;
};
}([0, 2, 4, 6, 8, 1, 3, 5, 7, 9]);
Nota que unía fuente está en ES6 idioma (conocidos como JavaScript 2015), pero se transpiled en ES5 (ver index.js) y es totalmente unidad probado
Además, es utilizable tanto en navegadores y/o node.js.
Benchmarks y otra implementación están en jsperf para verificar sus altos rendimientos.
Ahora, si simplemente desea utilizarlo, tome el código del repository vinculado.
De lo contrario instalarlo a través de bower ...
bower install luhn-alg
O vía npm ...
npm install luhn-alg
responsabilidad: yo soy el autor del paquete luhn-alg
.
- 1. Validación del lado del cliente de FluentValidation
- 2. Validación del lado del cliente de Grails
- 3. Integrar Validación del lado del cliente
- 4. Validación del lado del cliente ASP.NET MVC
- 5. DDD y validación del lado del cliente
- 6. ASP.NET: Sincronización de reglas de validación del lado del cliente y del servidor
- 7. ¿Cómo usar las reglas de validación tanto del lado del cliente como del lado del servidor?
- 8. Validación de entrada de usuario, del lado del cliente o del lado del servidor? [PHP/JS]
- 9. RegisterOnSubmitStatement después de la validación del lado del cliente
- 10. Crear validación combinada del lado del cliente y del lado del servidor en Symfony2
- 11. MVC2 Validación del lado del cliente para un DateTime?
- 12. mvc validación del lado del cliente para propiedades anidadas (recopilación)
- 13. IValidatableObject en MVC3 - validación del lado del cliente
- 14. MVC3 Validación del lado del cliente errática/inconsistente
- 15. MVC3 Validación del lado del cliente no funciona
- 16. ¿Cómo mostrar programáticamente las burbujas de error de validación del lado del cliente de HTML5?
- 17. ¿Por qué necesitamos la validación del lado del servidor y del lado del cliente para las aplicaciones web?
- 18. Validación personalizada del lado de cliente de ASP.Net
- 19. ASP.NET validador propio lado del cliente y la validación del lado del servidor no disparar
- 20. Sesiones del lado del cliente
- 21. Método del lado del servidor y del lado del cliente
- 22. Idiomas del lado del cliente
- 23. ASP.NET Validación lado del servidor
- 24. Ruby: del lado del cliente o del lado del servidor?
- 25. caché de archivos del lado del cliente
- 26. JSR 303 Validación de frijoles + Javascript Validación del lado del cliente
- 27. Web Charting, lado del servidor o del lado del cliente?
- 28. ¿Evento de incendio después de la validación del script del lado del cliente en asp.net?
- 29. Asignaciones de datos del CMS de Orchard: validación del lado del cliente
- 30. MVC3 CompareAttribute, error del lado del cliente
¿Por qué querrías usar javascript para verificar la información de la tarjeta de crédito? –
@ gabriel1836, hay un algoritmo que le permite saber si los dígitos de la tarjeta de crédito están en el conjunto de dígitos aceptables. No es una confirmación del 100%, pero descarta casi todos los errores aleatorios. – torial
Se llama algoritmo luhn-10 – mdec