Page 1 sur 1

Impossible de voir le texte qu'on tappe

Publié : 03 août 2007, 21:21
par Ceubex
Bonjour,

J'ai remarqué que lorsque on modifiez un champs de texte celui ci revenez toujours au début. Pas le curseur mais la zone de texte visible.

Ainsi par exemple, si je fais quelque chose du genre
<input type="text" onkeypress="this.value+='Z' "> (c'est stupide comme code mais c'est juste pour l'exemple)
Quand on tappe un mot ou deux tout va bien mais lorsque le texte tappé n'est plus visible dans son integralité il y a ce bug et quand on tappe quelque chose on ne voit pas ce qu'on tappe.

Y a t il un moyen de regler ce problème ?

Merci d'avance

Message envoyé avec : Mozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6

Publié : 04 août 2007, 10:51
par Benoit
Oui, il faut enregistrer la position du curseur avec selectionEnd avant de modifier le contenu, puis remettre le curseur au bon endroit avec setSelectionRange.

Dans IE c'est différent, il faut utiliser caretPos.

Pour un exemple, regarde le code d'insertion des smileys ici même (function emoticon) :)

Publié : 04 août 2007, 15:02
par Ceubex
J'ai essayé et j'ai fait le code suivant :

Code : Tout sélectionner

<input type="text" onkeyup="var deb=this.selectionStart; this.value=this.value.toUpperCase(); this.setSelectionRange(deb,deb);" />
Mais le problème est toujours le même

Message envoyé avec : Mozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6

Publié : 05 août 2007, 00:08
par Benoit
Oups oui j'ai oublié quelque chose : tu dois faire la même chose avec la valeur scrollTop (l'enregistrer avant et la remettre après).

http://developer.mozilla.org/fr/docs/DO ... .scrollTop

Publié : 05 août 2007, 14:29
par Ceubex
Alors maintenant c'est devenu

Code : Tout sélectionner

  <input type="text" onkeyup="var deb=this.selectionEnd; var pos=this.scrollTop; this.value=this.value.toUpperCase(); this.scrollTop=pos; this.setSelectionRange(deb,deb);" />
Mais ça ne marche toujours pas lol

Message envoyé avec : Mozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6

Publié : 05 août 2007, 15:49
par Benoit
Heu, je crois que c'est parce que j'ai mal lu depuis le début, je pensais que tu parlais d'un champ textarea (à cause du texte qui déborde). Mea culpa :(

Alors il est possible qu'il n'y ait pas de solution, à part utiliser une zone plus grande. Essaie quand même avec scrollLeft, puisque le débordement est horizontal et non vertical comme je le pensais. On ne sait jamais.

Publié : 05 août 2007, 19:02
par Ceubex
Ca ne marche pas avec scrollLeft
Merci quand même

Message envoyé avec : Mozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6