我正在尝试在用户在文本区域中按下回车键后插入一些文本,并将光标立即定位在插入的文本之后。有类似的问题解决了将光标设置到所需位置的问题(jQuery Set Cursor Position in Text Area),但我已经可以适当地设置光标位置。
我的问题:在我之后更改光标位置之前,有没有办法在更改 textarea 值时防止光标位置移动到文本框的开头?
为什么我问:如果在向下滚动 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;
}
});