Bonjour à tous,
J'ai terminer le tuto de création d'un chat de grafikart sur cakephp et tou fonctionne a merveille,
Ensuite j'ai décidé de l'amélioré pour qu'il soit plus convivial.
Une des améléioration est l'envoie du message en apuyant sur enter sauf si Shift ou Ctrl est pressé, dans ce cas il fera un normal retour a la ligne (comportement qu'il y a sur bcp de instant chat)
Pour cela j'ai fait un listner sur les touche qui fonctionne très bien, mais pour ne pas devoir refaire la fonction d'envoie ajax, j'ai voulu la mettre dans une fonction nommé et la, c'est le drame, les première requete ajax me retourne rien dutout (et par la suite elle fonctionne)
Voici le début de mon code:
/* VARAIBLES GLOBAL */
var url = "instants/background";
var lastid = 0;
var timer;
var atimer;
/* Start when/if jQuery has been loaded */
$(function() {
timer = 0;setInterval(getMessages,3000);
atimer = 0;setInterval(getAttends,10000);
getAttends();
//$("#ircForm form").submit(submitMessage());
$(document).keydown(function (e) {
if(e.which == 13 && !e.shiftKey) {
submitMessage();
return false;
}
});
});
/**
* submitMessage
*
* Sent the message, block the form and scroll
*/
function submitMessage() {
clearInterval(timer);
showLoader("#ircForm");
var message = $("#ircForm form textarea").val();
$.post(url,{action: "addMessage", message: message}, function(info) {
if(info.erreur == 'ok') {
getMessages();
$("#ircForm form textarea").val("");
} else {
alert(info.erreur);
}
timer = setInterval(getMessages,3000);
$('html, body').animate({scrollTop: $(document).height()}, 800);
hideLoader();
}, "json")
return false;
}
De cette façon il tourne très bien mais j'ai du mettre $("#ircForm form").submit(submitMessage()); en commentaire parce que c'est la premiere requete ajax qui plantait... d'alleur je me demande pourquoi elle s'est executé
Bref quelqu'un voit il une erreur dans mon mode de fonctionement?
Ok je crois avoir résolu le problème.
Il fallait le mettre dans une function () {} et ajotuer un return false:
$("#ircForm form").submit(function() {
submitMessage();
return false;
});
et maintenant, ça marche mais est-ce normal qu'il envoie parfois deux fois et donc que j'ai le message deux foi affiché?