Event preventDefault fonctionne plus

Résolu
Bonjour,

Alors voila d’habitude sa fonctionné mais la plus


function sendMessage(e){

e.preventDefault();
.......
.....
...
..
}

document.querySelector('form').addEventListener('submit', sendMessage);


a l'aide d'un formulaire ou j'ai un Textarea et un button submit, j'essai d’empêcher l'action par défaut qui est action="send.php" pour envoyer mon form avec ajax.

merci d'avance

3 réponses

  1. Modérateur
    addEventListener('submit', sendMessage(e));
    
    
    

    1
    1. Merci,

      j'avais déjà fait ça elle return une erreur "Uncaught ReferenceError: e is not defined " a la line
      document.querySelector('form').addEventListener('submit', sendMessage(e));


      je mes suis dis qu'il était hors de porter mais sa n'est ressoude pas mon problème de preventDefault.
      0
    2. Modérateur
      @carterjEssaye ceci
      document.querySelector("form").addEventListener("click", function(event) {
            event.preventDefault();
           sendMessage();
      }, false);
      
      
      0
    3. @jordane45ça marche toujour pas voila tout mon code
      HTML

      <form method="post" action="send.php?action=write">
      <input type="text" class="form-control" id="contenu">
      <button type="submit" class="btn_send"">Envoyer</button>
      </form>


      ma function

      function sendMessage(event){

      event.preventDefault();

      const content = document.querySelector('#content');

      const data = new FormData();
      data.append('content', content.value);

      const requeteAjax = new XMLHttpRequest();
      requeteAjax.open('POST', 'send.php?action=write');

      requeteAjax.onload = function(){
      content.value = '';
      content.focus();

      }

      requeteAjax.send(data);

      }

      document.querySelector("form").addEventListener("click", function(event) {
      event.preventDefault();
      sendMessage();
      }, false);
      0
  2. Modérateur
    Déjà... ça serait bien que tu précises le langage dans les balises de code... histoire qu'on ait la coloration syntaxique et la numérotation des lignes.
    Explications sur l'utilisation des balises de code à lire ENTIEREMENT disponibles ici :
    https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code

    Ensuite,
    si tu ouvres la console JS de ton navigateur... tu dois certainement y voir un joli message d'erreur....
    Change ton code par :
    
      function sendMessage(){
        let content = document.querySelector('#content');
        let data = new FormData();
        data.append('content', content.value);
     
       let requeteAjax = new XMLHttpRequest();
    
       requeteAjax.open('POST', 'send.php?action=write');
    
        requeteAjax.onload = function(){
          if (requeteAjax.readyState === 4) {
                if (requeteAjax.status === 200) {
                    content.value = '';
                    content.focus();  
                } else {
                    console.error(requeteAjax.statusText);
                }
            }
    
       }
    
      requeteAjax.send(data);
      
    }
    
    document.querySelector("form").addEventListener("click", function(event) {
         event.preventDefault();
         sendMessage();
    }, false);
    

    1
    1. Merci du conseil :).
        echo "hmm ceci est en PHP";
      


         document.getElementById("error_message").style.display = "block";
      /* js */
      


      Merci tout roule .
      0