feature: Wire up contact and thank you pages, add showInNav meta functionality

This commit is contained in:
Keith Solomon
2025-04-21 15:10:28 -05:00
parent 1a9b58d7d7
commit 29b398921b
20 changed files with 280 additions and 533 deletions

41
public/assets/contact.js Normal file
View File

@@ -0,0 +1,41 @@
document.getElementById("contactForm").addEventListener("submit", function (e) {
const name = document.getElementById("name");
const email = document.getElementById("email");
const message = document.getElementById("message");
let valid = true;
// Clear errors
document.querySelectorAll("[data-error]").forEach(el => {
el.classList.add("hidden");
el.textContent = "";
});
// Validate name
if (name.value.trim() === "") {
showError("name", "Name is required");
valid = false;
}
// Validate email
if (!/^[^@\s]+@[^@\s]+\.[^@\s]+$/.test(email.value)) {
showError("email", "Enter a valid email address");
valid = false;
}
// Validate message
if (message.value.trim().length < 10) {
showError("message", "Message must be at least 10 characters");
valid = false;
}
if (!valid) {
e.preventDefault();
}
function showError(field, message) {
const el = document.querySelector(`[data-error="\${field}"]`);
el.textContent = message;
el.classList.remove("hidden");
}
});