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