web-dev-qa-db-ja.com

jQuery:ブラウザ固有のコードなしで入力のテキストのカーソル位置を取得しますか?

Queryいブラウザ固有のコードを実行せずにテキスト入力で現在のカーソル位置を取得する方法はjQueryにありますか?

のように:

<input id="myTextInput" type="text" value="some text" >

「いくつかのテキスト」の「x」の後にカーソルがあると、「8」を取得できますか?

28
Ansgar

someブラウザー固有のコードがなければ、これを行うことはできません。これは、テキスト選択範囲がわずかに異なるためです。ただし、これを抽象化するプラグインがあります。まさにあなたが望んでいることのために、 jQuery Caret(jCaret)プラグイン があります。

コードで位置を取得するには、次のようなことができます。

$("#myTextInput").bind("keydown keypress mousemove", function() {
  alert("Current position: " + $(this).caret().start);
});

ここでテストできます

33
Nick Craver

Jquery Caretプラグインに関する警告。

Masked Inputプラグイン (またはその逆)と競合します。幸いなことに、Masked Inputプラグインには独自のcaret()関数が含まれており、基本的なニーズに合わせてCaretプラグインと非常によく似た機能を使用できます-$(element).caret()。beginまたは.end

15
Daniel Gill

構文text_element.selectionStartを使用すると、text_element.value内の選択されたテキストの最初の文字のインデックスに関して、テキストの選択の開始位置を取得できます。選択の最後の文字text_element.selectionEndを使用する必要があります。

次のように使用します。

<input type=text id=t1 value=abcd>
<button onclick="alert(document.getElementById('t1').selectionStart)">check position</button>

fiddle_demo を提供しています

14
Rajesh Paul

ブラウジング中に出くわしただけで、あなたを助けるかもしれない javascript-getting-and-setting-caret-position-in-textarea。テキストボックスにも使用できます。

7
Chinmayee G