-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathscript.js
100 lines (85 loc) · 2.55 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
88
89
90
91
92
93
94
95
96
97
98
99
100
const form = document.getElementById('survey-form');
const progressBar = document.getElementById('form-progress');
const formInputs = form.querySelectorAll('input, select, textarea');
function updateProgress() {
const totalInputs = formInputs.length;
let filledInputs = 0;
formInputs.forEach(input => {
if (input.type === 'radio' || input.type === 'checkbox') {
if (input.checked) {
filledInputs++;
}
} else if (input.value.trim() !== '') {
filledInputs++;
}
});
const progress = (filledInputs / totalInputs) * 100;
progressBar.style.width = `${progress}%`;
}
formInputs.forEach(input => {
input.addEventListener('input', updateProgress);
input.addEventListener('change', updateProgress);
});
form.addEventListener('submit', function(event) {
event.preventDefault();
if (validateForm()) {
showModal('Thank you for your feedback! Your responses have been submitted.');
form.reset();
updateProgress();
}
});
function validateForm() {
let isValid = true;
const requiredInputs = form.querySelectorAll('[required]');
requiredInputs.forEach(input => {
if (input.value.trim() === '') {
isValid = false;
showError(input, 'This field is required');
} else {
clearError(input);
}
});
const emailInput = document.getElementById('email');
if (emailInput.value.trim() !== '' && !isValidEmail(emailInput.value)) {
isValid = false;
showError(emailInput, 'Please enter a valid email address');
}
return isValid;
}
function isValidEmail(email) {
const re = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
return re.test(email);
}
function showError(input, message) {
const formGroup = input.closest('.form-group');
const errorElement = formGroup.querySelector('.error-message') || document.createElement('div');
errorElement.className = 'error-message';
errorElement.textContent = message;
formGroup.appendChild(errorElement);
input.classList.add('error');
}
function clearError(input) {
const formGroup = input.closest('.form-group');
const errorElement = formGroup.querySelector('.error-message');
if (errorElement) {
errorElement.remove();
}
input.classList.remove('error');
}
function showModal(message) {
const modal = document.createElement('div');
modal.className = 'modal';
modal.innerHTML = `
<div class="modal-content">
<p>${message}</p>
<button onclick="closeModal()">Close</button>
</div>
`;
document.body.appendChild(modal);
}
function closeModal() {
const modal = document.querySelector('.modal');
if (modal) {
modal.remove();
}
}