Salut,
Je bosse sur un tchat que je fignole maintenant. Je voudrais supprimer la fonction principale de la touche entrée dans le textarea qui fait faire un saut de ligne.
Voila ce que j'ai coté html :
<textarea class="text_tchat" id="text_tchat'.$this->_to_id.'" rows="1" cols="50" onkeypress="if (event.keyCode == 13)PosterTchat(\''.$this->_to_id.'\',\'poster_tchat\')"></textarea>
J'y rajoute une fonction d'autosize qui permet d'agrandir le textarea automatiquement et donc JE NE VEUX PLUS DU RETOUR CHARIOT.
merci bonne journée
$('#text_tchat').keypress(function(e){
if(e.keyCode == 13){
e.preventDefault(); // Annule la saisie d'un retour chariot
$(this).parents('form').submit(); // Soumet le formulaire
}
});
?
Je n'y arrive pas en plus il faut que je fasse passer des variables grace au onclick ce qui m'oblige à rester coté html, j'ai tenté return false et e.preventDefault dans le onclick mais le comportement n'est pas au RDV. Je viens de lui mettre une fonction d'autorezise ( qui agrandit le texarea automatiquement ) et apparemment le retour chariot ne se fait plus que sur la première ligne...Je vais voir ce que je peux faire avec ca. essayer de fouiner dans ce plugin jquery.
Merci Vallyan, je vois que tu es présent sur pas mal de post ! c'est cool :)
je crois avoir trouvé...
Élément du DOM :
<textarea id="text_tchat />
Élément écouté par jQuery dans la fonction de Vallyan :
$('#text_chat')
Donc pour que ça marche, il faudrait rajouter un "t" à "text_chat", pour qu'il colle à l'id de l'élément dans le DOM. Sans ça, ça ne fonctionnera pas. Il est clair que si tu as simplement copié collé ça ne risque pas de marcher.
J'ai essayé une fois ceci corrigé avec un console.log, et ça marche niquel.
Pour le reste du truc, il suffit de faire une fonction submit en javascript qui sera appelée indifféremment selon qu'un enter soit fait dans le textarea ou qu'un submit soit fait au clic. Et ces deux actions feront un submit().
Merci Pakito d'avoir noté mon erreur, tu as parfaitement raison. Je viens de mettre a jour mon post.
@ Vincerolf: Je suis pas sur de bien comprendre ce dont tu as besoin au final. Le bout de code que je te donne annule la saisie d'un retour chariot, et soumet le formulaire qui contient le textarea lorsque l'on presse la touche entrée.
Tu peux en parallèle ajouter une fonction qui intercepte la soumission de ton formulaire pour faire les trucs que tu veux, que le formulaire soit soumis par un clique ou par le déclenchement de ma fonction précédente ...
$('#idFormulaire').submit(function(e){
e.preventDefault();
// Fait des trucs lorsque le formulaire est soumis ...
// Par exemple envoie tes données en AJAX ...
// Récupère ensuite la réponse serveur ...
});
Donne nous plus de précision si tu veux faire des choses un peu plus complexe que simplement prévenir la saisie d'un retour ligne, éventuellement avec plus de code que juste le textarea.
Pour le t je n' avais pas remarqué mais de toute façon j'avais changé de sélecteur pour voir si cela venait de la.
En fait je ne peux pas me passer du onclick niveau html car j'ai besoin de récupérer to_id et action. Bon ne vous en faite pas je vais ruser autrement. Votre méthode fonctionne j'en suis sur mais dans mon cas je n'arrive pas à l'appliquer...Alors évidement ca vient de moi.
Je vois pas du tout le rapport entre le keypress et le onclick, et en quoi l'un empeche l'autre.
Je vois pas bien non plus ce que tu veux dire par onlick <u>niveau html</u>.
Enfin bonne chance ;) ...
Je soumets le form en ajax avec jquery et je dois faire passer des valeurs depuis le formulaire...je suis sur ipad je ne peux pas poster le code js la sinon la fonction PosterTchat de mon premier post fait le submit.
OK, je continue a penser ce que ce n'est pas incompatible.
Cela dit tu fais bien comme tu veux ^^ ... je suis pas du tout la pour te faire reprendre tout ton code comme moi je l'aurais écris :) ...