evenement PreventDefault qui ne fonctionne pas

Par Sparkosis, il y a 10 ans


Salut salut, petit problème assez bizarre je dois dire, je suis le tuto de grafikart sur le chat de nodejs et j'ai un problème sur mon formu des lors que j'envoie mon message le formulaire se lance et n'exéc pas le prevent default voici le code js:

$("#messform").submit(function(e){ e.preventDefault(); socket.emit('newmsg', {message: $('#btn-input').val()}); $('#btn-input').val(''); $('#btn-input').focus(); })

Et le code HTML:

<form action="" id="messform"> <div class="input-group"> <input id="btn-input" type="text" class="form-control input-sm" placeholder="Type your message here..."> <span class="input-group-btn"> <button class="btn btn-warning btn-sm" type="submit" id="btn-chat">Send </button> </span> </div> </form>

Il actualise ma page et du coup ça va pas, merci de m'aider

3 réponses

betaWeb, il y a 10 ans

Salut,

C'est tout à fait normal puisqu'il te manque le return false; à la fin du callback de la fonction submit():

$("#messform").submit(function(e) { e.preventDefault(); socket.emit('newmsg', {message: $('#btn-input').val()}); $('#btn-input').val('').focus(); return false; });
Sparkosis, il y a 10 ans

D'accord, en effet ce code est généré en js je te remercie.

Maenhyr, il y a 10 ans

Bonjour,
vu que return false realise e.preventDefault() et e. stopPropagation(), si ton code JS n'est pas appele il y a 2 possibilites :

    1. il faut e.stopPropagation() en plus ( ce dont je doute)
    1. ton code est appele avant la creation du formulaire. Pour contrer ca, il te faut changer la ligne $("#messform").submit(function(e) {

      par

      $(document).on('submit', "#messform", function(e) {