main.js 2.6 KB

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