Astuces Forumactif
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
Membres connectés récemment
Voir tous les membres

[AWESOMEBB] Compteur de caractères et de mots

Voir le sujet précédent Voir le sujet suivant Aller en bas

MathisB
MathisB
http://www.dixily.fr

MessageMathisB Lun 2 Aoû 2021 - 16:21

  • Version du forum :
    AWESOMEBB
  • Templates modifiés :
    oui
  • Navigateur :
    Autre
Bonjour,

Ca fait un petit temps que je n'étais pas venu ici. J'espère que vous allez tous et toutes bien.

Sur mon forum, j'utilise ce script qui me permet d'ajouter à l'éditeur un compteur de mots et de caractères:
Code:
$(function(){
    if(!$('#text_editor_textarea').length || !$.fn["sceditor"]) return;
      var smil=$('#text_editor_textarea').length;
      if(smil)
      {
    $(function(){
      $('.sceditor-container').after('<div id="M14_Decompte"><span class="one"></span> mot(s) - <span class="two"></span> caractère(s) (espace non compris)</div>');
    var texta=$('#text_editor_textarea').sceditor('instance');
    if(!texta) return;
    var raf= function(){
    
      //var num=texta.val().length;
      // On ne prend pas en compte les mots entre [] ou <>
      var nb = texta.val().replace(/\[.*?\]/g,' ').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 1 lettres ou plus
 var nb_mots = (nb.match(/\S{1,}/g)||[]).length ;
$('.one').text(nb_mots);
$('.two').text(nb_carac);
};
texta.keyUp(function(){setTimeout(function(){ raf() }, 2000)});raf()})
      }
      });

Ce script ignore les balises BBCODE et HTML. J'ai essayer de le modifier pour qu'il ignore également les caractères de ponctuation mais je n'y arrive malheureusement pas.
Je viens donc demander de l'aide ici.

Bonne journée [AWESOMEBB] Compteur de caractères et de mots 1f609


EDIT :
Voici le CSS associé :
Code:
$(function(){
    if(!$('#text_editor_textarea').length || !$.fn["sceditor"]) return;
      var smil=$('#text_editor_textarea').length;
      if(smil)
      {
    $(function(){
      $('.sceditor-container').after('<div id="M14_Decompte"><span class="one"></span> mot(s) - <span class="two"></span> caractère(s) (espace non compris)</div>');
    var texta=$('#text_editor_textarea').sceditor('instance');
    if(!texta) return;
    var raf= function(){
    
      //var num=texta.val().length;
      // On ne prend pas en compte les mots entre [] ou <>
      var nb = texta.val().replace(/\[.*?\]/g,' ').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 1 lettres ou plus
 var nb_mots = (nb.match(/\S{1,}/g)||[]).length ;
$('.one').text(nb_mots);
$('.two').text(nb_carac);
};
texta.keyUp(function(){setTimeout(function(){ raf() }, 2000)});raf()})
      }
      });


Dernière édition par MathisB le Mar 3 Aoû 2021 - 19:47, édité 1 fois

Milouze14 aime ce message

Milouze14
Milouze14
Fondateur

https://www.milouze14.net/

MessageMilouze14 Mar 3 Aoû 2021 - 6:46

Salut Mathis,

alors ce script devrait faire l'affaire en gardant l'esprit du compteur de mots impeccable .
Remplaces ce dernier par celui-ci:
Code:
$(function(){
        if(!$('#text_editor_textarea').length || !$.fn["sceditor"]) return;
          var smil=$('#text_editor_textarea').length;
          if(smil)
          {
        $(function(){
          $('.sceditor-container').after('<div id="M14_Decompte"><span class="one"></span> mot(s) - <span class="two"></span> caractère(s) (caractéres spéciaux non compris)</div>');
        var texta=$('#text_editor_textarea').sceditor('instance');
        if(!texta) return;
        var raf= function(){
        
        
// On ne prend pas en compte les caracteres speciaux et ponctuation
var nb = texta.val().replace(/\[.*?\]/g,' ').replace(/<.*?>/g,' ').replace(/:.*?:/g,' ').replace(/[^a-zA-Z0-9]/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 1 lettres ou plus
     var nb_mots = (nb.match(/\S{1,}/g)||[]).length ;
    $('.one').text(nb_mots);
    $('.two').text(nb_carac);
    };
    texta.keyUp(function(){setTimeout(function(){ raf() }, 2000)});raf()})
}
});
MathisB
MathisB
http://www.dixily.fr

MessageMathisB Mar 3 Aoû 2021 - 15:20

Bonjour Phil,

Merci pour ton aide. Malheureusement, le nouveau script bloque le compteur de mot à un seul maintenant.

Et c'est vrai que j'ai oublié de le préciser dans ma demande, j'en suis désolé. Mais je voudrais que les caractères de ponctuation soient ignorés pour le compteur de mots uniquement et pas pour celui des caractères. C'est ma faute, j'ai mélangé les 2 :/


Dernière édition par MathisB le Mar 3 Aoû 2021 - 19:47, édité 1 fois
Milouze14
Milouze14
Fondateur

https://www.milouze14.net/

MessageMilouze14 Mar 3 Aoû 2021 - 18:49

Je t'en prie hinhin ,

remplaces le script par celui-ci alors:
Code:
$(function(){
        if(!$('#text_editor_textarea').length || !$.fn["sceditor"]) return;
          var smil=$('#text_editor_textarea').length;
          if(smil)
          {
        $(function(){
          $('.sceditor-container').after('<div id="M14_Decompte"><span class="one"></span> mot(s) - <span class="two"></span> caractère(s) (caractéres spéciaux non compris)</div>');
        var texta=$('#text_editor_textarea').sceditor('instance');
        if(!texta) return;
        var raf= function(){
       
       
// On ne prend pas en compte les caracteres speciaux et ponctuation
 
var nb = texta.val().replace(/\[.*?\]/g,' ').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 1 lettres ou plus
  var nb_mots = (nb.match(/[a-zA-Z0-9éèàêâùïüëçô]{1,}/g)||[]).length ;   
    $('.one').text(nb_mots);
    $('.two').text(nb_carac);
    };
    texta.keyUp(function(){setTimeout(function(){ raf() }, 2000)});raf()})
}
});

MathisB aime ce message

MathisB
MathisB
http://www.dixily.fr

MessageMathisB Mar 3 Aoû 2021 - 19:47

Bonsoir Phil,

Tout fonctionne parfaitement. Un grand merci à toi ! [AWESOMEBB] Compteur de caractères et de mots 1f600 

Je passe le sujet en résolu.

Bonne fin de soirée [AWESOMEBB] Compteur de caractères et de mots 1f609

Milouze14 aime ce message

Milouze14
Milouze14
Fondateur

https://www.milouze14.net/

MessageMilouze14 Mar 3 Aoû 2021 - 19:48

Bonsoir Mathis,
de rien cher ami, bonne fin de soirée à toi aussi.


Hello


Sujet résolu et déplacé dans le forum adéquate

A bientôt pour une prochaine demande clin oeil



Message envoyé via la réponse rapide par: @Milouze14

Voir le sujet précédent Voir le sujet suivant Revenir en haut

Créer un compte ou se connecter pour répondre

Vous devez être membre pour répondre.

S'enregistrer

Rejoignez notre communauté ! C'est facile !


S'enregistrer

Connexion

Vous êtes déjà membre ? Aucun soucis, cliquez ici pour vous connecter.


Connexion

 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum