Page 1 sur 1

limiter le nombre de mot dans un textarea

Posté : 10 oct. 2008, 10:27
par dogmongo
Bonjour,

Je développe un module de petite annonce ou je voudrais limiter le nombre de mots par annonce, j'ai cherché sur le web et on ne parle que de limite de caractère.
Quelqu’un aurai une idée ?

Merci d'avance

Posté : 10 oct. 2008, 11:03
par guilt92
Bonjour,

Je pense qu'il faut appliquer le même principe qu'une limite par nombre de caractère, mais au lieu de vérifier ca tu prends le contenu de ton textearea, tu fais un split() en fonction des espaces et tu regardes le nombre d'éléments du tableau ainsi généré...

Cela dit c'est plutot étrange comme facon de procéder non ? Car si quelqu'un n'utilise jamais d'espaces par exemple il pourra écrire tout ce qu'il veut dans le champs ?

Posté : 10 oct. 2008, 11:36
par dogmongo
Merci guilt92, tu as eu la bonne idée ca marche super

Code : Tout sélectionner

function limite(textarea, max) { var espace = ' '; var chaine = textarea.value; var pattern = new RegExp(espace); var nbmots= chaine.split(pattern); espace = espace - 1; var result = 'Dans l\'annonce ("' + chaine + '") \n il y a ' + nbmots.length + ' mots \n'; document.getElementById('max_desc').innerHTML = result; }
sinon ta remarque est très constructive, je n'avais pas pensé à cette arnac :roll:
je ne sais pas si c'est possible de vérifier la longueur des mots !
en plus les numéros de téléphone ne comptes pas pour un mot, mais j'ai déjà pensé à la parade

Code : Tout sélectionner

chaine.replace()

Posté : 10 oct. 2008, 12:10
par guilt92
Attention tout de même cela n'est pas tout a fait exact :

Si j'écris "Il faut d'abord vérifier les espaces" le split va compter 6 mots alors qu'en réalité la phrase en contient 7... Il faudrait aussi vérifier les ' et les - (quoique avec un - peut etre que cela ne vaut que pour un mot, je sais plus :D... Même sur les apostrophes j'ai un doute, doit on considérer que ca fasse 2 mots... Enfin si ton code n'es pas pour l'académie francaise les espaces comme séparateur ca doit suffire...)

Bah pour vérifier la longueur des mots il suffit de compter la longueur des éléments de ton tableau qui split entre les espace : la longueur de chaque élément du tableau revient à la longueur du mot... De la tu peux fixer un maximum avec Anticonstitutionnellement (25 caractères, le mot de plus long de la langue francaise....) Apres si les gens écrivent dans une autre langue je connais pas le mot le plus long ;)

Posté : 10 oct. 2008, 12:18
par dogmongo
J'ai réussi à ne pas prendre les points et virgule je vais voir si jeu peu appliquer ton idée :wink:

Code : Tout sélectionner

<script type="text/javascript"> function limite(textarea, max) { var espace = ' '; var chaine = textarea.value; chaine=chaine.replace(/[.]/g,""); // je vire les points de mon comptage chaine=chaine.replace(/[,]/g,""); // je vire les virgules de mon comptage var pattern = new RegExp(espace); var nb = chaine.split(pattern); var result = 'Dans l\'annonce ("' + chaine + '") \n il y a ' + nb.length + ' mots \n'; document.getElementById('max_desc').innerHTML = result; } </script>

Posté : 10 oct. 2008, 12:23
par mere-teresa
J'espère que tu vérifieras aussi en PHP :)

Posté : 10 oct. 2008, 13:23
par dogmongo
oui bonne idée :)