forked from Laboratoria/BOG003-card-validation
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathindex.js
73 lines (62 loc) · 3.5 KB
/
index.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
import validator from './validator.js';
let btnValidationPage = document.getElementById('btn-validate-page');
btnValidationPage.addEventListener('click', () => {
document.getElementById('inicio').style.display = 'none';
document.getElementById('validationPage').style.display = 'block';
}, false);
/* Mostrar en el texto el número ingresado en el input */
document.getElementById('input-number').addEventListener('blur', () => {
const cardNumber = document.getElementById('input-number').value;
document.getElementById('card-number').textContent = cardNumber;
});
/* Click para cambiar de pantalla y mostrar si es válida o no la tarjeta */
document.getElementById('validate').addEventListener('click', () => {
const cardNumber = document.getElementById('input-number').value;
const sumCard = cardNumber.split('').reduce((a, b) => parseInt(a) + parseInt(b), 0)
/* Comprobar si el campo está vacío y es diferente a 0 */
if ((cardNumber.length == 0 || /^\s+$/.test(cardNumber) || sumCard == 0)) {
document.getElementById('input-number').style.borderColor = '#c93c3ce1';
document.getElementById('input-number').placeholder = 'Ingresa un número válido';
return false;
}
else {
document.getElementById('validationPage').style.display = 'none';
document.getElementById('resultValidatePage').style.display = 'block';
document.getElementById('card-number-result').textContent = cardNumber;
validateCard();
}
});
/* Click para regresar a la pantalla de ingreso de datos */
document.getElementById('validate-other').addEventListener('click', () => {
document.getElementById('resultValidatePage').style.display = 'none'
document.getElementById('validationPage').style.display = 'block';
document.getElementById('card-number').textContent = '•••• •••• •••• ••••';
document.getElementById('input-number').value = ' ';
document.getElementById('input-number').placeholder = 'Escribe aquí tu número de tarjeta';
document.getElementById('input-number').style.borderColor = 'gray';
});
/* Función del botón para mostrar si la tarjeta es válida o no */
const validateCard = () => {
const cardNumber = document.getElementById('input-number').value;
maskifyNumber(cardNumber); // Llamamos la función que muestra el número de tarjeta oculto
const validation = validator.isValid(cardNumber); // Se trae el objeto validator y isValid para que tome el algoritmo Luhn
if (validation) {
return document.getElementById('msj-validate').textContent = 'VÁLIDA';
}
else return document.getElementById('msj-validate').textContent = 'NO VÁLIDA';
}
/* Función que trae el valor ingresado mostrando solo los últimos 4 digitos */
const maskifyNumber = (creditCardNumber) => {
/* imprime el valor del input en el h3 card-number-result */
document.getElementById('card-number-result').textContent = validator.maskify(creditCardNumber);
}
/* Función para que la opción INICIO en el menú envíe a la página de inicio */
let menuStart = document.getElementById('linkStart');
menuStart.addEventListener('click', () => {
document.getElementById('inicio').style.display = 'block';
document.getElementById('validationPage').style.display = 'none';
document.getElementById('resultValidatePage').style.display = 'none';
document.getElementById('card-number').textContent = '•••• •••• •••• ••••';
document.getElementById('input-number').value = ' ';
}
);