-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathindex.js
135 lines (118 loc) · 5.12 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
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
/* Establecemos las constantes siguiendo la id que establecimos en html
para llamarlas rápidamente en nuestro código */
const form = document.getElementById('formulario');
const nombre = document.getElementById('nombre');
const email = document.getElementById('email');
const password = document.getElementById('password');
const password2 = document.getElementById('password2');
/* Establecemos las constantes para si hay un error o si está todo ok */
const setError = (element, message) => {
const inputControl = element.parentElement;
const errorDisplay = inputControl.querySelector('.error');
errorDisplay.innerText = message;
inputControl.classList.add('error');
inputControl.classList.remove('success')
}
const setSuccess = element => {
const inputControl = element.parentElement;
const errorDisplay = inputControl.querySelector('.error');
errorDisplay.innerText = '';
inputControl.classList.add('success');
inputControl.classList.remove('error');
};
/* Establecemos constantes para usar las expresiones regulares en
nombre y email para que sigan un patrón de lo que permitimos
como válido para cada input */
const nombreValido = nombre => {
const re1 = /^[A-ZÑa-zñáéíóúÁÉÍÓÚ'° ]+$/;
return re1.test(String(nombre));
}
const emailValido = email => {
const re = /^(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
return re.test(String(email).toLowerCase());
}
/* Creamos una constante que revise toda la información que
hemos escrito en el formulario, y que salte un alert
si está o no ok */
const validateInputs = () => {
var msg = '';
const nombreValue = nombre.value.trim();
const emailValue = email.value.trim();
const passwordValue = password.value.trim();
const password2Value = password2.value.trim();
if(nombreValue === '') {
var msg = msg+'Rellene este campo';
setError(nombre, msg);
document.getElementById('erroricon').style.opacity = "1";
document.getElementById('successicon').style.opacity = "0";
} else if (!nombreValido(nombreValue)) {
var msg = msg+'El nombre no debe contener números ni caracteres especiales';
setError(nombre, msg);
document.getElementById('erroricon').style.opacity = "1";
document.getElementById('successicon').style.opacity = "0";
} else {
setSuccess(nombre);
document.getElementById('erroricon').style.opacity = "0";
document.getElementById('successicon').style.opacity = "1";
}
var msg = '';
if(emailValue === '') {
var msg = msg+'Rellene este campo';
setError(email, msg);
document.getElementById('emailerroricon').style.opacity = "1";
document.getElementById('emailsuccessicon').style.opacity = "0";
} else if (!emailValido(emailValue)) {
var msg = msg+'Email inválido';
setError(email, msg);
document.getElementById('emailerroricon').style.opacity = "1";
document.getElementById('emailsuccessicon').style.opacity = "0";
} else {
setSuccess(email);
document.getElementById('emailerroricon').style.opacity = "0";
document.getElementById('emailsuccessicon').style.opacity = "1";
}
var msg = '';
if(passwordValue === '') {
var msg = msg+'Rellene este campo';
setError(password, msg);
document.getElementById('passerroricon').style.opacity = "1";
document.getElementById('passsuccessicon').style.opacity = "0";
} else if (passwordValue.length < 8 ) {
var msg = msg+'Debe tener más de 8 caracteres';
setError(password, msg);
document.getElementById('passerroricon').style.opacity = "1";
document.getElementById('passsuccessicon').style.opacity = "0";
} else {
setSuccess(password);
document.getElementById('passerroricon').style.opacity = "0";
document.getElementById('passsuccessicon').style.opacity = "1";
}
var msg = '';
if(password2Value === '') {
var msg = msg+'Rellene este campo';
setError(password2, msg);
document.getElementById('pass2erroricon').style.opacity = "1";
document.getElementById('pass2successicon').style.opacity = "0";
} else if (password2Value !== passwordValue) {
var msg = msg+'Las contraseñas no coinciden';
setError(password2, msg);
document.getElementById('pass2erroricon').style.opacity = "1";
document.getElementById('pass2successicon').style.opacity = "0";
} else {
setSuccess(password2);
document.getElementById('pass2erroricon').style.opacity = "0";
document.getElementById('pass2successicon').style.opacity = "1";
}
if (msg ==='') {
alert('La inscripción ha sido correcta');
} else {
alert('Hay algún error en el formulario');
}
}
/* Usamos el event listener para evitar que se envíe el formulario
si está vacío y revisando los campos del formulario con la
constante que creamos anteriormente */
form.addEventListener('submit', (event) => {
event.preventDefault();
validateInputs();
});