Skip to content

Commit 85c0490

Browse files
committed
[Update] Added Form check script
Added a form validation script that checks for form inputs and shows errors if needed
1 parent ff11a01 commit 85c0490

1 file changed

Lines changed: 68 additions & 0 deletions

File tree

Dist/Functional/FormCheck.js

Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
'use strict'
2+
3+
const InitializeFormCheck = () => {
4+
let pattern = /^[+]*[(]{0,1}[0-9]{1,3}[)]{0,1}[-\s\./0-9]*$/g;
5+
var checkForms = document.querySelectorAll('[wt-formcheck-element="form"]');
6+
if (!checkForms || checkForms.length === 0) return;
7+
for (var form of checkForms) {
8+
var errorClass = form.getAttribute("wt-formcheck-class");
9+
var submitMessage = form.getAttribute("wt-formcheck-message");
10+
var requiredFields = form.querySelectorAll('[wt-formcheck-type="required"]');
11+
var errorElements = form.querySelectorAll('[wt-formcheck-type="error"]');
12+
var submitButton = form.querySelector('[wt-formcheck-type="submit"]');
13+
var requiredFieldsAndCheckboxes = form.querySelectorAll('[wt-formcheck-type="required"], [type="checkbox"]');
14+
var formErrors = false;
15+
16+
for (let element of errorElements) {
17+
element.style.display = 'none';
18+
}
19+
20+
for (var field of requiredFields) {
21+
field.classList.remove(`${errorClass}`);
22+
};
23+
24+
let fieldError = (field) => {
25+
field.parentNode.querySelector('[wt-formcheck-type="error"]').style.display = 'block';
26+
field.classList.add(`${errorClass}`);
27+
formErrors = true;
28+
}
29+
30+
for (var field of requiredFieldsAndCheckboxes) {
31+
field.addEventListener('keypress', (e) => {
32+
if (errorClass) e.target.classList.remove(`${errorClass}`);
33+
e.target.parentNode.querySelector('[wt-formcheck-type="error"]').style.display = 'none';
34+
formErrors = false;
35+
});
36+
37+
field.addEventListener('blur', (e) => {
38+
if (errorClass) e.target.classList.remove(`${errorClass}`);
39+
e.target.parentNode.querySelector('[wt-formcheck-type="error"]').style.display = 'none';
40+
formErrors = false;
41+
});
42+
};
43+
44+
submitButton.addEventListener('click', () => {
45+
formErrors = false;
46+
for (let field of requiredFields) {
47+
if (field.getAttribute('type') === 'checkbox' && !field.checked) {
48+
fieldError(field.nextElementSibling);
49+
} else if (field.value.trim() === '') {
50+
fieldError(field);
51+
} else if (field.getAttribute('type') === 'email' && (field.value.indexOf('@') === -1 || field.value.indexOf('.') === -1)) {
52+
fieldError(field);
53+
} else if (field.getAttribute('type') === 'number' && field.value.trim() === '' && !isNaN(field.value.trim())) {
54+
fieldError(field);
55+
} else if (field.getAttribute('type') === 'tel' && !field.value.match(pattern)) {
56+
fieldError(field);
57+
}
58+
};
59+
60+
if (!formErrors) {
61+
submitButton.textContent = `${submitMessage}`;
62+
form.submit();
63+
}
64+
});
65+
}
66+
}
67+
68+
document.addEventListener("DOMContentLoaded", InitializeFormCheck);

0 commit comments

Comments
 (0)