-
Notifications
You must be signed in to change notification settings - Fork 0
/
script.js
87 lines (69 loc) · 1.99 KB
/
script.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
let Validator = {
monitorSubmit:(e)=> {
e.preventDefault();
send = true;
setTimeout(Validator.removeError, 3000)
let inputs = form.querySelectorAll('input');
for(let i=0;i<inputs.length;i++) {
let input = inputs[i];
let rules = Validator.checkRules(input);
if(rules != true) {
send = false;
Validator.showError(input, rules)
};
}
if(send) {
let html = ''
html += '<div>Cadastro Concluído</div>';
let txt = html;
form.querySelector('.send--button').innerHTML = txt;
}
},
checkRules:(input, check)=> {
let rules = input.getAttribute('input-rules');
if(rules !== null) {
rules = rules.split('|');
for(let n in rules){
let rulesDetail = rules[n].split('=');
switch(rulesDetail[0]) {
case 'required':
if(input.value == '') {
return `Esse campo precisa ser preenchido!`.toUpperCase();
}
break;
case 'min':
if(input.value.length < rulesDetail[1]) {
return `No mínimo ${rulesDetail[1]} caracteres`.toUpperCase();
}
break;
case 'email':
if(input.value != '') {
let regex = /[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?/;
if(!regex.test(input.value.toLowerCase()))
return `E-mail inválido`.toUpperCase();
}
break;
}
}
}
return true;
},
showError:(input, error)=> {
let errorElement = document.createElement('div');
errorElement.classList.add('error');
errorElement.innerHTML = error;
input.closest('.input-area').parentElement.insertBefore(errorElement, input.ElementSibling);
},
removeError:()=> {
let input = form.querySelectorAll('input');
for (let i=0;i<input.length;i++){
input[i].style = '';
}
let errorElement = document.querySelectorAll('.error');
for (let i=0;i<errorElement.length;i++){
errorElement[i].remove();
}
}
};
let form = document.querySelector('.validator');
form.addEventListener('submit', Validator.monitorSubmit)