Bonjour,
J'aurais besoins d'une petite fonctions pour faire un retour à la ligne automatique dans ma TextArea.
Plus précisément, je voudrais que si une des ligne a une largeur supérieure à 16 caractères, que ça détecte où se situe le dernier espace (pour ne pas couper les mots en deux) et que ça mette un retour à la ligne à la place de cet espace. Le tout si possible sans changer la position du curseur dans la TextArea, ce qui n'est pas le cas du code que j'avais essayé :
En gros, il split le contenu de mon input (ici ma textarea) et met chaque ligne dans un array.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29 function ralAuto(input){ var lines = input.value.split(String.fromCharCode(13)); for(var i = 0;i < lines.length;i++){ var vi = reverse(lines[i]); var n = vi.indexOf(" "); if (vi.length > 16){ vi = vi.replaceAt(n,String.fromCharCode(13)); lines[i] = reverse(vi); } if(i === 0){ input.value = lines[0]; }else{ input.value += lines[i]; } } } //Reverse function : function reverse(s) { var o = ''; for (var i = s.length - 1; i >= 0; i--) o += s[i]; return o; } //replaceAt function : String.prototype.replaceAt=function(index, character) { return this.substr(0, index) + character + this.substr(index+character.length); };
Ensuite, pour chaque ligne, il la met à l'envers et cherche la position du premier espace (le dernier quand on est à l'endroit).
Si la longueur est supérieure à 16 caractères, on remplace le caractère la position de l'espace par un retour à la ligne.
Puis on remet les lignes dans la textarea.
Ce code marche pour la première ligne de ma textarea, puis met un retour à la ligne après chaque caractère (il faut savoir que cette fonction est exécutée par l'event onInput de ma textarea, donc la fonction ne doit si possible pas bouger le curseur pour ne pas gêner l'écriture).
Merci d'avance,
Paul
Partager