在js修改输入值后,"滚动"到输入的末尾

use*_*515 7 javascript jquery

我有一个<input id="inp" type="text">用户写入,有时使用字典中的建议.当选择建议时,我做:

var input = $('#inp'); 
input.val(input.val()+suggestedText+' '); 
input.focus(); // that is because the suggest can be selected with mouse
Run Code Online (Sandbox Code Playgroud)

一切都很好,但是当添加一个建议使得结果input.val()太长而无法适应编辑字段时,光标位于字符串的末尾(这很好),但只有字符串的开头在编辑中可见字段,因此光标也被隐藏.

一旦按下一个键(一个改变值的键),"滚动"就会到达隐藏开头的字符串的末尾...如何自动触发此行为,而不必按键?

我在这里找到了一个解决方案- 但由于整个输入体验发生了变化,这并不好......

小智 0

要实现此功能,您需要在设置值之前设置 focus() 。您可以通过多种方式解决此问题,例如:

input.focus(); // that is because the suggest can be selected with mouse
var input = $('#inp'); 
input.val(input.val() + suggestedText + ' ');
Run Code Online (Sandbox Code Playgroud)

或者这个:

function changeValue(element, newValue) {
    element.focus();
    element.val(element.val() + newValue + ' ');
}
Run Code Online (Sandbox Code Playgroud)