ユーザーがテキストエリアでEnterキーを押した後にテキストを挿入し、挿入されたテキストの直後にカーソルを配置しようとしています。カーソルを目的の位置に設定する問題に対処する同様の質問があります ( jQuery Set Cursor Position in Text Area ) が、既にカーソル位置を適切に設定できます。
私の質問: textarea の値が変更されたときに、後でカーソル位置を変更する前に、カーソル位置がテキストボックスの先頭に移動しないようにする方法はありますか?
質問する理由: テキストエリアが下にスクロールされているときに Enter キーを押すと、カーソル位置をリセットする前にテキストエリアが一番上にスクロールして戻ります。下にスクロールします)。
サンプルコード ( http://jsfiddle.net/ywNbu/3/ )
$('#input').on("keypress", function(e) {
if (e.keyCode == 13) {
e.preventDefault();
var value = $("#input").val();
pos = $("#input").prop('selectionStart');
$("#input").focus();
// following line changes the cursor position to the beginning
$("#input").val(value.substring(0, pos) + "\nHello\n" + value.substring(pos));
this.setSelectionRange(pos + 7, pos+7);
return false;
}
});