Event preventDefault fonctionne plus

Résolu
carterj Messages postés 45 Statut Membre -  
carterj Messages postés 45 Statut Membre -
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. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
     
    addEventListener('submit', sendMessage(e));
    
    
    

    1
    1. carterj Messages postés 45 Statut Membre 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
      1. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830 > carterj Messages postés 45 Statut Membre
         
        Essaye ceci
        document.querySelector("form").addEventListener("click", function(event) {
              event.preventDefault();
             sendMessage();
        }, false);
        
        
        0
      2. carterj Messages postés 45 Statut Membre 1 > jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention  
         
        ç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. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
     
    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
  3. carterj Messages postés 45 Statut Membre 1
     
    Merci du conseil :).
      echo "hmm ceci est en PHP";
    


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


    Merci tout roule .
    0