-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathvalidacion.js
122 lines (108 loc) · 3.77 KB
/
validacion.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
const $form = document.querySelector("#form");
const inputs = document.querySelectorAll("#form input");
const inputa = document.querySelectorAll("#form textarea");
const expresiones = {
nombre: /^[a-zA-ZÀ-ÿ\s]{1,50}$/,
email: /^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$/,
asunto: /^[a-zA-ZÀ-ÿ\s]{1,20}$/,
mensaje: /^[a-zA-ZÀ-ÿ0-9\s]{1,200}$/,
};
const campos = {
nombre: false,
email: false,
asunto: false,
mensaje: false,
};
const validarFormulario = (e) => {
switch (e.target.name) {
case "nombre":
validarCampo(expresiones.nombre, e.target, "nombre");
break;
case "email":
validarCampo(expresiones.email, e.target, "email");
break;
case "asunto":
validarCampo(expresiones.asunto, e.target, "asunto");
break;
case "mensaje":
textArea(expresiones.mensaje, e.target, "mensaje");
break;
}
};
const validarCampo = (expresion, input, campo) => {
if (expresion.test(input.value)) {
document.getElementById(`input_${campo}`).classList.remove("incorrecto");
document.getElementById(`input_${campo}`).classList.add("correcto");
document
.querySelector(`#input_${campo} i`)
.classList.remove("fa-times-circle");
document
.querySelector(`#input_${campo} i`)
.classList.add("fa-check-circle");
campos[campo] = true;
} else {
document.getElementById(`input_${campo}`).classList.add("incorrecto");
document.getElementById(`input_${campo}`).classList.remove("correcto");
document
.querySelector(`#input_${campo} i`)
.classList.add("fa-times-circle");
document
.querySelector(`#input_${campo} i`)
.classList.remove("fa-check-circle");
campos[campo] = false;
}
};
inputs.forEach((input) => {
input.addEventListener("keyup", validarFormulario);
input.addEventListener("blur", validarFormulario);
});
const textArea = (expresion, textarea, campo) => {
if (expresion.test(textarea.value)) {
document.getElementById(`input_${campo}`).classList.remove("incorrecto");
document.getElementById(`input_${campo}`).classList.add("correcto");
document
.querySelector(`#input_${campo} i`)
.classList.remove("fa-times-circle");
document
.querySelector(`#input_${campo} i`)
.classList.add("fa-check-circle");
campos[campo] = true;
} else {
document.getElementById(`input_${campo}`).classList.add("incorrecto");
document.getElementById(`input_${campo}`).classList.remove("correcto");
document
.querySelector(`#input_${campo} i`)
.classList.add("fa-times-circle");
document
.querySelector(`#input_${campo} i`)
.classList.remove("fa-check-circle");
campos[campo] = false;
}
};
inputa.forEach((textarea) => {
textarea.addEventListener("keyup", validarFormulario);
textarea.addEventListener("blur", validarFormulario);
});
const $enviar = document.querySelector("#enviar");
$form.addEventListener("submit", enviarCorreo);
function enviarCorreo(e) {
e.preventDefault();
if (
campos.nombre &&
campos.email &&
campos.asunto &&
campos.mensaje
) {
const form = new FormData(this);
form.get("nombre");
form.get("email");
form.get("asunto");
form.get("mensaje");
$enviar.setAttribute(
"href",
`mailto:brct93@gmail.com?subject=Nombre:${form.get("nombre")},E-mail: ${form.get("email"
)},Asunto: ${form.get("asunto")},&body=${form.get("mensaje")}`
);
$enviar.click();
}
}