calculer le nombre de ligne d'une chaine

calculer le nombre de ligne d'une chaine - HTML/CSS - Programmation

Marsh Posté le 16-10-2009 à 11:11:25    

Bonjour,
 
je souhaite calculer le nombre de ligne d'une chaine de caractères, sans tenir compte du nombre de caractère.
j'ai en effet un bloc de taille limité, avec une hauteur en pixel fixe.
le texte pouvant être de la forme :  
 
blabla blabla blabla, blabla blabla
blablablablablablablablablabla
blablablabla.
blablablabla
bal,
bsdudvh.
 
ou  
 
blablablablablablablablablablablablablabla
blablablablablablablablablablablablablabla
blablablablablablablablablablablablablabla
 
le nombre de caractère m'importe peu car xx caractères peuvent tenir ou pas dans mon bloc, selon le nombre de ligne et donc cela dépend de la mise en forme du texte.
je veux donc compter le nombre de ligne et limiter la textarea à ce nombre de ligne.
sauf que là je ne trouve pas de solution en javascript. (je dois montrer en temps réèl à l'utilisateur ou il en est par rapport à la limite imposé, après il y a une vérif en php).
 
Merci pour votre aide.

Reply

Marsh Posté le 16-10-2009 à 11:11:25   

Reply

Marsh Posté le 16-10-2009 à 12:06:38    

pour me répondre,
je crains qu'il n'y ai pas de solution à mon problème...
j'ai tenté avec un split sur "\n" mais la textarea fait des retour automatique à la ligne, selon sa taille mais ce ne sont pas des retour automatique effectué par l'utilisateur... je ne peut donc pas les compter...
 
var nblignes = document.getElementById('madiv').value.split("\n" ).length;
 
mais le résultat est faux...

Reply

Marsh Posté le 16-10-2009 à 13:40:23    

Peut-être en récupérant la hauteur d'un conteneur div qui se stretche par rapport à son contenu, et à partir du lineHeight (ou je sais plus comment s'appelle la propriété de style qui retourne la taille totale d'une ligne) en déduire le nombre de ligne...
Enfin, c'est plus de la débrouille, je sais que ça ne répond pas à ta question...


Message édité par abais le 16-10-2009 à 13:42:07

---------------
Le membre ci-contre n'est pas responsable du message ci-dessus.
Reply

Marsh Posté le 16-10-2009 à 14:08:06    

jedebute75 a écrit :

pour me répondre,
je crains qu'il n'y ai pas de solution à mon problème...
j'ai tenté avec un split sur "\n" mais la textarea fait des retour automatique à la ligne, selon sa taille mais ce ne sont pas des retour automatique effectué par l'utilisateur... je ne peut donc pas les compter...
 
var nblignes = document.getElementById('madiv').value.split("\n" ).length;
 
mais le résultat est faux...


 
Tu mets ton textarea en adéquation avec un div avec display à none qui s'auto-rempli quand tu tapes du texte dans ton textarea et tu regardes le nombre de "\n" dans le contenu de ton div.


Message édité par Hermes le Messager le 16-10-2009 à 14:08:42

---------------
Expert en expertises
Reply

Marsh Posté le 19-10-2009 à 11:46:44    

bonjour,
merci pour vos réponse.
hermes, je vais creuser ta réponse, c'est une excellente piste, je n'y avais pas pensé...

Reply

Marsh Posté le 19-10-2009 à 12:25:35    

voilà, je viens de tester, malheureusement, il ne me compte pas les "\n", comme si il n'existait pas dans la div.
en revanche mon script fonctionne en comptant les <br> mais le résultat est encore faux puisque en saut de ligne je peux avoir n'importe quoi (ex des <li> ).
bizzard...

Reply

Marsh Posté le 19-10-2009 à 12:46:59    

et "ma" technique ?


---------------
Le membre ci-contre n'est pas responsable du message ci-dessus.
Reply

Marsh Posté le 19-10-2009 à 12:48:26    

jedebute75 a écrit :

voilà, je viens de tester, malheureusement, il ne me compte pas les "\n", comme si il n'existait pas dans la div.
en revanche mon script fonctionne en comptant les <br> mais le résultat est encore faux puisque en saut de ligne je peux avoir n'importe quoi (ex des <li> ).
bizzard...


 
Comment tu les comptes tes \n ?  :sarcastic:


---------------
Expert en expertises
Reply

Marsh Posté le 19-10-2009 à 13:13:50    

comme ceci :  
moncontenu.innerHTML.split("\n" ).length;
 
ça fonctionne puisque si je remplace \n par une balise existente, ça me la compte sans problème, mais les " _n", rien...
abais, effectivement, je n'ai pas testé ta méthode, si celle-ci ne donne rien, je testerai ...
merci à vous deux

Reply

Marsh Posté le 19-10-2009 à 13:36:27    

jedebute75 a écrit :

comme ceci :  
moncontenu.innerHTML.split("\n" ).length;
 
ça fonctionne puisque si je remplace \n par une balise existente, ça me la compte sans problème, mais les " _n", rien...
abais, effectivement, je n'ai pas testé ta méthode, si celle-ci ne donne rien, je testerai ...
merci à vous deux


 
 
moncontenu.innerHTML.split("\\n" ).length;  :sarcastic:


---------------
Expert en expertises
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed