/** * @author vincent voyer * vincent.voyer@gmail.com */ (function($){ $.fn.chat = function(params){ var params = $.extend({ refresh:1.7 },params); function chat(jElt) { //jElt correspond à
var chat=jElt.find('.chat div'); // div qui contiendra le texte du chat // gestion de l'entrée au clavier jElt.find('form').submit(function() { var input=$(this).find(':input'); var message=input.val(); if ($.trim(message).length > 0) { // il faut au moins avoir écrit quelque chose pour l'afficher jElt.find('.ajaxStatus').show(); input.val(''); /* on vide l'input */ input.blur(); input.attr("disabled", "disabled"); $.post("/lab/chat/ecrire", { msg: message }, function(data){ input.removeAttr("disabled"); input.focus(); if (data) chat.append('

' + data.pseudo + ' > ' + data.msg + '

'); jElt.find('.ajaxStatus').hide(); }, 'json'); } return false; }); /* gestion de la récupération des nouveaux messages */ var lireMessages = function(){ $.getJSON("/lab/chat/lire", function(data){ $.each(data, function(i,msg){ chat.append('

'+msg.pseudo+' > '+msg.msg+'

'); }); setTimeout(lireMessages,params.refresh*1000); }); } lireMessages(); //on lance la récupération des messages } return this.each(function(){ chat($(this)); }); }; })(jQuery)