我试图在用户按下textarea中的enter并在插入的文本后立即定位光标时插入一些文本。解决将光标设置到所需位置(jQuery Set Cursor Position in Text Area)的问题有类似的问题,但我已经可以适当地设置光标位置。
我的问题:在我改变光标位置之前,有没有办法阻止光标位置移动到文本框的开头?
为什么我问:如果在textarea向下滚动时按下enter键,则textarea会在重置光标位置之前滚动回顶部,这会分散注意力(用户将在屏幕上看到文本框的第一个内容闪烁在文本框向下滚动之前)。
示例代码(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;
}
});