javascript - 手动向输入元素添加字符时出现光标问题

标签 javascript html cross-browser microsoft-edge

我正在使用 javascript 将字符添加到 html 输入字段

document.querySelector('input');
input.value += getChar();

DEMO

虽然这可行,但是当添加的字符多于输入视口(viewport)时仍然存在一个问题。结果是插入符号将不再可见

我找到了一个解决这个问题的方法:

input.blur();
input.focus();

在演示中,这已经实现了,但是,此技巧在 Edge 中不起作用。有什么建议如何将插入符号保留在 View 中吗?

最佳答案

此版本适用于 Firefox、Chrome、Opera 和 Edge(未在 Safari 上测试)。

当然,有些部分在某些浏览器上是无用的,应该测试旧浏览器支持的属性是否存在,但这可行:

对于 Firefox,blur() 没有用,但在 Chrome 中是必需的。

对于 Edge,select() 它向右移动,下一行取消选择文本。

function caretIntoView() {
    input.setSelectionRange(input.value.length, input.value.length);
    input.blur();
    input.focus();
    input.select();
    input.selectionStart = input.selectionEnd = input.value.length;
}

修改后的 fiddle :https://jsfiddle.net/xxk04mn6/7/

关于javascript - 手动向输入元素添加字符时出现光标问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45918689/

相关文章:

javascript - 安全地查找 jQuery 中是否存在元素

javascript - 从网页获取数据,然后在另一个网页上显示

html - 如何使用CSS3绘制如下形状

javascript - 需要干净 chop 文本以显示更多 - 更少

javascript - 如何防止触摸事件的默认处理?

html - 是否有允许构建跨浏览器兼容的 html 和 css 代码的程序或框架?

javascript - 将单独的 js 文件与多个 jquery (document).ready() 事件统一的正确方法

javascript - 以动态创建的形式命名输入元素

html - CSS,垂直对齐在 Mozilla Firefox 中不能正常工作

javascript - 将事件监听器绑定(bind)到新呈现的动态元素