-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathscript.js
More file actions
86 lines (74 loc) · 2.49 KB
/
Copy pathscript.js
File metadata and controls
86 lines (74 loc) · 2.49 KB
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
// ---- Live Time ----
function updateTime() {
const now = new Date();
const currentTime = now.toLocaleTimeString();
const timeElement = document.querySelector('[data-testid="test-user-time"]');
if (timeElement) timeElement.textContent = currentTime;
}
updateTime();
setInterval(updateTime, 1000);
// ---- Form Logic ----
const form = document.getElementById("contactForm");
const message = document.getElementById("formMessage");
form.addEventListener("submit", (e) => {
e.preventDefault();
document.querySelectorAll(".error-text").forEach((el) => el.textContent = "");
let isValid = true;
// --- Name validation ---
const name = document.getElementById("name");
if (!name.value.trim()) {
showError(name, "Full name is required.");
isValid = false;
}
// --- Email validation ---
const email = document.getElementById("email");
const emailPattern = /^[^ ]+@[^ ]+\.[a-z]{2,3}$/;
if (!email.value.trim()) {
showError(email, "Email is required.");
isValid = false;
} else if (!emailPattern.test(email.value)) {
showError(email, "Please enter a valid email address.");
isValid = false;
}
// --- Subject validation ---
const subject = document.getElementById("subject");
if (!subject.value.trim()) {
showError(subject, "Subject is required.");
isValid = false;
}
// --- Message validation ---
const userMessage = document.getElementById("message");
if (!userMessage.value.trim()) {
showError(userMessage, "Message is required.");
isValid = false;
} else if (userMessage.value.trim().length < 10) {
showError(userMessage, "Message must be at least 10 characters.");
isValid = false;
}
// --- If valid, show success message ---
if (isValid) {
message.textContent = "✅ Message sent successfully!";
message.className = "form-message success";
form.reset();
setTimeout(() => {
message.textContent = "";
message.className = "form-message";
}, 4000);
} else {
message.textContent = "❌ Please fix the highlighted errors.";
message.className = "form-message error";
}
});
// ---- show error messages ----
function showError(input, msg) {
const errorId = input.id + "-error";
let errorEl = document.getElementById(errorId);
if (!errorEl) {
errorEl = document.createElement("small");
errorEl.id = errorId;
errorEl.className = "error-text";
input.insertAdjacentElement("afterend", errorEl);
}
errorEl.textContent = msg;
input.setAttribute("aria-describedby", errorId);
}