$( function(){ /// si pas de champs texte, on arrête la lecture du script if(!$('#text_editor_textarea').length){ return ; } // Il y a un champs texte $(function(){ var compte = false ; var champs_msg = $('#text_editor_textarea').sceditor('instance'); // Si on ne trouve pas l'éditeur de texte, on arrete la lecture du script if(!champs_msg){ return ; } function compteur(champs_msg){ // On ne prend pas en compte les mots entre [] ou <> var nb = champs_msg.val().replace(/\[.*?\]/g,' ').replace(/<.*?>/g,' '); // On compte le nombre de caractères, sans les espaces var nb_carac = (nb.match(/\S/g)||[]).length; // On compte le nombre de mot de 3 lettres ou plus var nb_mots = (nb.match(/\S{3,}/g)||[]).length ; // On affiche les infos champs_infos.innerHTML = "Nombre de caractères : "+nb_carac+" ; Nombre de mots : "+nb_mots+" "; compte = false ; } // On crée une zone pour afficher le nombre de mots et de caractères var champs_infos = document.createElement('div'); champs_infos.setAttribute('id', 'compteur-mots'); $(champs_infos).appendTo('.sceditor-container'); // On teste si on édite un message ou si on en écrit un nouveau // Si nouveau message : on met les infos à "0" if(champs_msg.val() == ""){ champs_infos.innerHTML = "Nombre de caractères : 0 ; Nombre de mots : 0 "; }else{ // Sinon, on compte ^^ compteur(champs_msg); } // Quand on a appuyé sur un bouton du clavier dans la zone de saisi, // on fait une fonction. $('body').on('keyup', '.sceditor-container', function(){ if(compte){ return ; }else{ compte = true ; // On compte toutes les 20 secondes setTimeout( function(){ compteur(champs_msg) }, 2000 ); } }); }); });