1. ホーム
  2. javascript

[解決済み] textareaのカーソル位置はどのように取得するのですか?

2023-07-03 14:29:31

質問

テキストエリアがあるのですが、JavaScriptでカーソルがテキストエリアの最終行にあるのか、それとも先頭行にあるのかを知りたいのです。

最初の改行文字と最後の改行文字の位置を掴んで、カーソルの位置を掴もうと考えました。

var firstNewline = $('#myTextarea').val().indexOf('\n');
var lastNewline = $('#myTextarea').val().lastIndexOf('\n');

var cursorPosition = ?????;

if (cursorPosition < firstNewline)
    // I am on first line.
else if (cursorPosition > lastNewline)
    // I am on last line.

  • テキストエリア内のカーソル位置を取得することは可能でしょうか?
  • textareaの最初の行にいるか最後の行にいるかを見つけるための良い提案はありますか?

JavaScriptが同じかそれ以上に単純でない限り、jQueryのソリューションが好ましいです。

どのように解決するのですか?

選択範囲がない場合は、プロパティの .selectionStart または .selectionEnd (のどちらかを選択します(選択しない場合、それらは等しくなります)。

var cursorPosition = $('#myTextarea').prop("selectionStart");

これは古いブラウザ、特にIE8-ではサポートされていないことに注意してください。 そこでは、テキスト範囲を扱う必要がありますが、完全にフラストレーションです。

しかし、入力要素における選択/カーソル位置の取得と設定に特化したライブラリがどこかにあると思います。その名前は思い出せませんが、このテーマに関する記事は何十もあるようです。