2017-10-14 10 views
0

Bonjour, je suis nouveau sur JS et je pourrais avoir besoin d'aide. Donc, j'essaie d'envoyer du texte d'une zone de texte à une fonction appelée inputFromText lors d'un clic sur un bouton Soumettre, mais la fonction est déclenchée avant le clic (lors de l'ouverture de la fenêtre html par un électron) et rien ne se passe lorsque vous cliquez sur le bouton après.cliquez sur les déclenchements d'événement sans bouton cliquez sur

Comment puis-je empêcher cela?

<body> 
    <form> 
    <div class="form-group"> 
     <textarea class="form-control" rows="5" id="txa_trainingText"></textarea> 
     <button type="submit" class="btn btn-default" id="btn_submit">Submit</button> 
    </div> 
    </form> 
    <script> 
    const trainingText = document.getElementById("txa_trainingText").value; 
    document.getElementById("btn_submit").addEventListener("click", inputFromText(trainingText)); 
    function inputFromText(text) { 
     ... 
    } 
    </script> 
</body> 

Je trouve que lorsque vous utilisez une fonction sans l'argument texte on pourrait résoudre le problème en écrivant:

function inputFromText(e) { 
    e.preventDefault(); 
    ... 
} 
+0

Possible doublon de [addEventListener appelle la fonction sans même que je le demande à] (https://stackoverflow.com/questions/16310423/addeventlistener-calls-the-function-without-me-even-asking-it-to – DocMax

+0

Vous devez transmettre la référence à la fonction en tant que second paramètre à 'addEventListener'. Comme écrit, vous appelez la fonction et passez la valeur retournée à la place. Voir la question liée pour des réponses plus détaillées. – DocMax

Répondre

0

Je crois que vous avez besoin d'envelopper le gestionnaire d'événements de clic en fonction, si la ligne lirait:

document.getElementById("btn_submit").addEventListener("click", function() { inputFromText(trainingText)}); 
+0

Cela l'empêche de se déclencher dès le début, mais maintenant quand j'essaie d'appeler e. g. 'console.log (123);' dans la fonction. "123" apparaît pendant une courte période mais est immédiatement supprimé de la console, c'est bizarre ... – AstronAUT

+0

vrai, je pense que vous voulez regarder le commentaire de @santoshkumar puis changer le type de bouton en "bouton" au lieu de "soumettre" . . . Autrement, lorsque vous regardez la sortie de la console, elle disparaît lorsque le formulaire est renvoyé au serveur (c'est-à-dire que le comportement du bouton Soumettre). Si vous avez vraiment besoin d'un bouton d'envoi, vous pouvez faire votre console.log avant que l'alerte et l'exécution de la page ne soient suspendues jusqu'à ce que vous cliquiez sur l'alerte vous donnant le temps d'examiner console.log – BlissRage

0

il suffit de changer le type de bouton = "submit" à bouton type = "button"

<button type="button" class="btn btn-default" id="btn_submit">Submit</button>