main.js 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. const header = document.querySelector(".main-header");
  2. const expresiones = {
  3. nombre: /^.{4,30}$/,
  4. email: /^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$/
  5. }
  6. window.addEventListener("scroll", () => {
  7. const scrollPos = window.scrollY;
  8. if (scrollPos > 10) {
  9. header.classList.add("scrolled");
  10. } else {
  11. header.classList.remove("scrolled");
  12. }
  13. })
  14. const form = document.getElementById("contactForm");
  15. const fields = {
  16. nombre: false,
  17. email: false,
  18. mensaje: false
  19. }
  20. const loader = document.querySelector(".contact-form-loader");
  21. const inputs = document.querySelectorAll("input:not([type='submit']), textarea");
  22. const inputSubmit = document.querySelector("input[type='submit']")
  23. const validateForm = (e) => {
  24. switch (e.target.name) {
  25. case "nombre":
  26. validateField(expresiones.nombre, e.target, 'nombre');
  27. break;
  28. case "email":
  29. validateField(expresiones.email, e.target, 'email');
  30. break;
  31. case "mensaje":
  32. if (e.target.value.length === 0) {
  33. document.querySelector("textarea[name='mensaje'] + .formulario__input-error").classList.remove('none')
  34. fields.mensaje = false;
  35. } else {
  36. document.querySelector("textarea[name='mensaje'] + .formulario__input-error").classList.add('none')
  37. fields.mensaje = true;
  38. }
  39. break;
  40. }
  41. }
  42. const validateField = (expresion, input, field) => {
  43. if (expresion.test(input.value)) {
  44. document.querySelector(`input[name='${field}']`).classList.remove('input__border-error')
  45. document.querySelector(`input[name='${field}'] + .formulario__input-error`).classList.add('none')
  46. fields[field] = true;
  47. } else {
  48. document.querySelector(`input[name='${field}']`).classList.add('input__border-error')
  49. document.querySelector(`input[name='${field}'] + .formulario__input-error`).classList.remove('none')
  50. fields[field] = false;
  51. }
  52. }
  53. inputs.forEach((input) => {
  54. input.addEventListener('keyup', validateForm);
  55. input.addEventListener('blur', validateForm);
  56. });
  57. form.addEventListener('submit', (e) => {
  58. e.preventDefault();
  59. const data = {};
  60. if (fields.nombre && fields.email && fields.mensaje) {
  61. inputSubmit.disabled = true;
  62. inputSubmit.value = "Enviando...";
  63. for (const input of inputs) {
  64. if (input.value.length === 0 || input.value === 0) {
  65. data[input.name] = null
  66. } else {
  67. data[input.name] = input.value;
  68. }
  69. }
  70. console.log('Data', data);
  71. // form.reset();
  72. }
  73. });