2010-03-28 6 views
2

J'ai écrit une fonction JS simple qui place le curseur à la fin du contenu d'une boîte de saisie lorsqu'elle reçoit le focus (l'action la plus courante dans la boîte étant d'ajouter). Je n'ai pas vérifié dans IE, mais quand il y a plus de texte que ce qui est visible, même déplacer le curseur à la fin de l'entrée ne fait pas défiler la vue à la fin de l'entrée dans Firefox 3.6.Faire défiler une zone de saisie jusqu'à la position du curseur en javascript

Une idée de comment faire cela?

P.S. Et non, je ne suis pas en utilisant JQuery, ni une option;)

trouvé une solution here en utilisant une formulation différente (caret au lieu du curseur)

Répondre

1

Vous pouvez faire défiler en attribuant à la propriété scrollTop du textarea:

// scroll to bottom 
elt.scrollTop = elt.scrollHeight; 

Firefox et Safari offrent également scrollByLines et IE a doScroll, mais la propriété est scrollTop cross-browser et plus simple à utiliser.

Personnellement, je ne l'aime pas lorsque le curseur est déplacé pour moi à la fin d'une zone de texte. Si je le veux à la fin, il faut une fraction de seconde pour le faire moi-même. Il faut environ une seconde pour déplacer le curseur de la fin à quelque part au milieu (la fin est une cible plus grande, prend donc less time to hit). Sauf si la zone de texte a un special purpose, je ne voudrais pas déranger avec la fonction append-on-focus.

Questions connexes