Как отключить warnDefault в прослушивателе событий с помощью Vanilla JS - PullRequest
0 голосов
/ 01 сентября 2018

Я все еще новичок в JS и хотел бы иметь возможность удалить прослушиватель событий, который останавливает отправку формы. Я попробовал несколько разных решений, чтобы сделать это в JS, а не JQuery без удачи. В настоящее время форма не отправляется, но я не могу отменить ее, если мои условия «если» неверны.

    
    var element = document.querySelector('form');
    element.addEventListener('submit', event => {
    event.preventDefault();
    });
   
    function validateForm() {
    
    var error = "";

        if (document.getElementById("name").value == "") {
        
           error += "<p>Name field required</p>"
       
       
        } 
    
        if (document.getElementById("email").value == "") {
        
           error += "<p>Email field required</p>"
      
        } 
    
        if (document.getElementById("subject").value == "") {
        
           error += "<p>Subject field required</p>"
       
        } 
    
        if (document.getElementById("question").value == "") {
        
           error += "<p>Question field required</p>"
       
        } 
     
    
        if (error != "") {
    
        document.getElementById("errorDiv").style.display = "block";
    
        document.getElementById("errorDiv").innerHTML = "<b>There wer error(s) in the form, please complete all required fields</b>" + error;
    
    
    } else {
  
            var element = document.querySelector('form');
            element.removeEventListener('submit', event => {
            event.preventDefault();
            });
            }
   
}
    <div id="errorDiv"></div>
    <form id="contact_form" onsubmit="validateForm();">
    <button type="submit"></button>

Заранее спасибо, если кто-нибудь может помочь.

1 Ответ

0 голосов
/ 01 сентября 2018

Я думаю, вы должны вернуть true/false из вашей функции validateForm(), чтобы предотвратить / отправить форму.

1. Вы должны вернуть значение из функции в разметке html:

<form id="contact_form" onsubmit="return validateForm();">

2. Возврат true/false из вашего validateForm() на основании проверки.

function validateForm() {
  var error = "";
    ................
    ................
    ................
    if (error != "") {
       document.getElementById("errorDiv").style.display = "block";
       document.getElementById("errorDiv").innerHTML = "<b>There wer error(s) in the   form, please complete all required fields</b>" + error;
       return false;

   } else {
     return true;
  }
 }
  1. Не требуется предотвращать отправку формы , поэтому удалите этот код.

    var element = document.querySelector('form');
    element.addEventListener('submit', event => {
    event.preventDefault();
    });
    
...