Comment vous faites défiler jusqu'à la position du curseur dans un textarea?

JS Fiddle Démo

HTML

<textarea rows='5'>
sdfasjfalsfjasf;klasdfklaksdfkjlasdfkjlasdjkfadls;fjklasdfjklasdkjlfaskljdfkalsjdfjlkasdfkjlasdkjlfasfkl;ajklsdfjklasdfkjlaskjldfaskjlfkljsadkjlfaskjldfkjlasdfkjlasdjklfaskljdfkjlasfkjlasdkjlfasjklfajklsdfjklasdfjlkadjsdfasjfalsfjasf;klasdfklaksdfkjlasdfkjlasdjkfadls;fjklasdfjklasdkjlfaskljdfkalsjdfjlkasdfkjlasdkjlfasfkl;ajklsdfjklasdfkjlaskjldfaskjlfkljsadkjlfaskjldfkjlasdfkjlasdjklfaskljdfkjlasfkjlasdkjlfasjklfajklsdfjklasdfjlkadjsdfasjfalsfjasf;klasdfklaksdfkjlasdfkjlasdjkfadls;fjklasdfjklasdkjlfaskljdfkalsjdfjlkasdfkjlasdkjlfasfkl;ajklsdfjklasdfkjlaskjldfaskjlfkljsadkjlfaskjldfkjlasdfkjlasdjklfaskljdfkjlasfkjlasdkjlfasjklfajklsdfjklasdfjlkadjsdfasjfalsfjasf;klasdfklaksdfkjlasdfkjlasdjkfadls;fjklasdfjklasdkjlfaskljdfkalsjdfjlkasdfkjlasdkjlfasfkl;ajklsdfjklasdfkjlaskjldfaskjlfkljsadkjlfaskjldfkjlasdfkjlasdjklfaskljdfkjlasfkjlasdkjlfasjklfajklsdfjklasdfjlkadj
</textarea>

<br />
<button id='scroll-to-cursor'>Scroll to Cursor</button>

JavaScript

$('#scroll-to-cursor').on('click', function() {
    //?
});

Résultat Souhaité

  1. Cliquez quelque part dans la zone de texte pour placer le curseur.
  2. Défilement si le curseur n'est pas visible.
  3. Cliquez sur "faites Défiler jusqu'à la position du Curseur" bouton.
  4. Textarea permet d'accéder à la position du curseur

Note: je suis en utilisant jQuery.

La seule façon que je pouvais comprendre comment le défilement est d'utiliser du jQuery scrollTop
fonction. Il définit la position de défilement à "le nombre de pixels qui sont cachés de la vue au-dessus de la zone déroulante".

J'ai schématisé le problème ci-dessous. De passage dans la longueur de la ligne rouge (en pixels) de scrollTop devrait faire l'affaire. Mais je ne peux pas comprendre comment obtenir la longueur de la ligne.

Comment vous faites défiler jusqu'à la position du curseur dans un textarea?

Serait - this travaux de lien? C'est de la pure JS.
Vous pouvez simplement de recentrer le textarea pour le ramener à la position du curseur dans les navigateurs webkit. Ne fonctionne pas sous IE/Firefox si
il a fait un travail, merci! Le premier coup d'œil, j'ai vu que c'était pour les entrées et le défilement horizontal, donc je ne pense pas qu'il appliqué mais je l'ai juste testé et il fonctionne.

OriginalL'auteur Adam Zerner | 2015-04-27