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


Sparkosis
Auteur
Réponse acceptée

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

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;
});

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) {