HTML input テキストフィールドで任意の範囲を選択するには、
<input type="text" value="1234567890">
jQuery で、focus して、setSelectionRange( 開始位置、終了位置 );
$('input').focus().get(0).setSelectionRange(3, 6);
setSelectionRange で指定する値は、0始まりで数える。
この setSelectionRange を使って、カーソルの位置を任意の位置に指定することができる。
→ 開始位置 と 終了位置を同じにすれば、その位置にカーソルを持ってくることができる。
$('input').focus().get(0).setSelectionRange(3, 3);
これは、上の input であれば、3と4の間にカーソルがくる。
以下でも同じくカーソルが3と4の間にくるが、
$('input').get(0).selectionStart = 3; $('input').get(0).selectionEnd = 3;
selectionEnd を 6 で指定して
$('input').get(0).selectionStart = 3; $('input').get(0).selectionEnd = 6;
これで、範囲選択になるのかというとそうではない。setSelectionRange( 開始位置、終了位置 ); で同じ値をセット
するというので、カーソルの位置を任意の位置に指定すると覚えた方が良い気がする。
現在のカーソル位置に、任意の文字を挿入したいなら、
var pos = $('input').get(0).selectionStart; $('input').val( $('input').val().substr(0, pos) + '-' + $('input').val().substr(pos));
3の後にカーソルを充てて、