Wie führen Sie einen Bildlauf zu der position des Cursors in der textarea?
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() {
//?
});
Gewünschte Ergebnis
- Klicken Sie irgendwo in das Textfeld zu plazieren Sie den cursor.
- Blättern entfernt, so dass der cursor nicht sichtbar ist.
- Klicken Sie auf "Scroll-to-Cursor" - Taste.
- Textarea scrollt, um die position des Cursors
Hinweis: ich verwende jQuery.
Nur so konnte ich herausfinden, wie Sie navigieren, ist die Verwendung von jQuery scrollTop
Funktion. Es legt die scroll-position, um "die Anzahl der Pixel, die von der Ansicht versteckt oberhalb des scrollbaren Bereichs".
Ich habe in Diagrammen erfasst das problem unten. Vorbei an der Länge der roten Linie (in Pixel) scrollTop
sollte den trick tun. Aber ich kann nicht herausfinden, wie man die Länge der Linie.
- Würde this link arbeiten? Es ist reines JS.
- Sie können einfach konzentrieren die textarea-Komponente, um es wieder zu der Position des Cursors in webkit-Browsern. Funktioniert nicht in IE/Firefox obwohl
- es hat funktioniert, vielen Dank! Auf den ersten Blick sah ich, dass es für Eingänge und horizontalen scrollen, so dass ich nicht denke, dass es beantragt, aber ich habe es gerade getestet und es funktioniert.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Macht den job.
Beispiel: https://jsfiddle.net/syy25x69/
Wählen Sie einen text im IE siehe: Set textarea-Auswahl in Internet Explorer
Von Jonathan Levine ' s Kommentar, erkannte ich, dass diese Antwort für mich funktioniert.
Fiddle Demo
JavaScript
Erklärung
Wenn der Benutzer eine Taste drückt, wird der browser macht zwei Dinge:
Diese Lösung nur simuliert, die (ohne tatsächlich die Eingabe von text).
Edit: Die alte Lösung ist nicht Normen-konform.
initKeyEvent
ist veraltet. Das update arbeitet nur mit denKeyboardEvent()
Konstruktor, der ist kompatibel und funktioniert in allen Browsern außer dem IE (Safari ist ein Fragezeichen).Edit 2: Mit
$.event.trigger({ type : 'keypress' });
stattnew KeyboardEvent()
funktioniert genauso gut, und funktioniert in allen Browsern.keypress
ist hier irrelevant, dies funktioniert auch, wenn Sie kommentieren Sie diese Zeile: jsfiddle.net/g74aabta Was passiert, ist, dass das klicken auf die Schaltfläche verwischt die textarea, und re-Fokussierung des textarea scrollen Sie den cursor in der Ansicht. Haben Sie nicht denken, es war seltsam, dass die textarea ist nicht ein argument für$.event.trigger({ type : 'keypress' });
?Dies ist meine spin auf die Dinge.
Fand ich, dass Audi Nugraha Lösung gearbeitet, bei der Prüfung, aber nicht, wenn ich versuchte, es in ein Elektron-Anwendung.
Einer Lösung, die Arbeit für mich war, um den cursor an den Anfang und dann Weichzeichnen/focus.
Habe ich eingearbeitet, die oben in eine Funktion: