Queryいブラウザ固有のコードを実行せずにテキスト入力で現在のカーソル位置を取得する方法はjQueryにありますか?
のように:
<input id="myTextInput" type="text" value="some text" >
「いくつかのテキスト」の「x」の後にカーソルがあると、「8」を取得できますか?
someブラウザー固有のコードがなければ、これを行うことはできません。これは、テキスト選択範囲がわずかに異なるためです。ただし、これを抽象化するプラグインがあります。まさにあなたが望んでいることのために、 jQuery Caret(jCaret)プラグイン があります。
コードで位置を取得するには、次のようなことができます。
$("#myTextInput").bind("keydown keypress mousemove", function() {
alert("Current position: " + $(this).caret().start);
});
Jquery Caretプラグインに関する警告。
Masked Inputプラグイン (またはその逆)と競合します。幸いなことに、Masked Inputプラグインには独自のcaret()関数が含まれており、基本的なニーズに合わせてCaretプラグインと非常によく似た機能を使用できます-$(element).caret()。beginまたは.end
構文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 を提供しています
ブラウジング中に出くわしただけで、あなたを助けるかもしれない javascript-getting-and-setting-caret-position-in-textarea
。テキストボックスにも使用できます。