Javascript 设置光标位置时,输入不聚焦于光标

Javascript 设置光标位置时,输入不聚焦于光标,javascript,html,dom,cursor-position,Javascript,Html,Dom,Cursor Position,我正在使用类型为text的HTML输入。我在JS中使用 当光标设置为这样的特定位置时,输入的滚动不会自动聚焦在光标的位置上。要强制滚动至焦点,必须手动计算输入的scrollLeft,并设置光标的位置。这就是问题所在 光标的位置由输入文本字符串中字符的索引设置。如果字符串中有40个字符,将光标设置为位置40会将其设置为字符串的结尾。不幸的是,scrollLeft是使用每个字符的宽度(以像素为单位)设置的。由于所有角色的宽度都不相同,因此出现了一个问题。这意味着,要手动将输入元素的焦点设置为光标的位

我正在使用类型为
text
的HTML输入。我在JS中使用

当光标设置为这样的特定位置时,输入的滚动不会自动聚焦在光标的位置上。要强制滚动至焦点,必须手动计算输入的
scrollLeft
,并设置光标的位置。这就是问题所在

光标的位置由输入文本字符串中字符的索引设置。如果字符串中有40个字符,将光标设置为位置40会将其设置为字符串的结尾。不幸的是,
scrollLeft
是使用每个字符的宽度(以像素为单位)设置的。由于所有角色的宽度都不相同,因此出现了一个问题。这意味着,要手动将输入元素的焦点设置为光标的位置,必须计算字符串开头和光标位置索引之间的每个字符的宽度

我想到的最简单的方法是创建第二个输入,用于单独测量字符串中每个字符的宽度。由于无法自动获取任何给定字符的宽度,因此第二次输入的
scrollWidth
将等于该单个字符的宽度。对于我的用例,光标一次只能改变一个索引的位置。这意味着我可以一次增加或减少每个字符的宽度

因为这将是非常复杂的,我想知道是否有人遇到了一些简单的东西,可以实现我的目标。比如:

inputEL.scrollLeft = 'auto';
注意:在输入中手动设置光标,然后在该输入上调用
focus()
,是行不通的。但这样的事情是理想的