29

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

のように:

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

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

4

4 に答える 4

36

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

あなたのコードが位置を取得するために、あなたはこのようなことをすることができます:

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

ここでテストできます

于 2010-11-03T10:40:35.727 に答える
16

構文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を与えています

于 2013-09-19T19:49:48.727 に答える
15

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

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

于 2011-10-02T12:36:02.017 に答える
7

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

于 2010-11-03T08:50:47.937 に答える