javascript - 当在 IE 中失去焦点并重新获得焦点时,如何保持用户对文本输入的选择?

标签 javascript jquery html caret

问题

在 Chrome/Firefox 中,用户的选择会完美返回,即使该字段未聚焦。在 IE 中,当字段未聚焦时,选择设置为 0。

代码

我目前正在使用 jQuery.caret() 来确定用户选择,它使用以下代码:

if ( this[0].setSelectionRange ) {
   begin = this[0].selectionStart;
   end = this[0].selectionEnd;
} else if ( document.selection && document.selection.createRange ) {
   var range = document.selection.createRange();
   begin = 0 - range.duplicate().moveStart( 'character', -100000 );
   end = begin + range.text.length;
}
return { begin: begin, end: end };

详情

我正在研究一个非常复杂的自动完成解决方案。使用键盘选择建议很好,因为焦点永远不会从文本输入中丢失。但是,使用鼠标会使文本输入模糊,然后重新聚焦。

用户的选择和插入位置对于建议如何填充到字段中很重要。

讨论

我宁愿不必在用户每次移动它时都保存它的位置(向左、向右、向上、向下箭头的按键、向上/向下翻页、退格键、鼠标事件点击等),它似乎在那里应该是一个让我要么:

  1. 监听一些我可以在模糊发生之前保存插入符的事件(onBlur 来不及了)。
  2. 使用不同的方法来确定 IE 中的用户选择。

再次重申,此问题仅在 IE 中出现。其他浏览器会正确处理此问题。

最佳答案

IE 选择的工作方式有点不同。看看这个 fiddle :http://jsfiddle.net/KC48j/11/

关于javascript - 当在 IE 中失去焦点并重新获得焦点时,如何保持用户对文本输入的选择?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6612724/

相关文章:

html 定位 - 文本与其他文本重叠

html - CSS 流体布局和放置 div

javascript - 将 IEnumerable 列表传递给 javascript

javascript - 如何在客户端Angularjs压缩图像大小?

javascript - 优化 Jquery 动画

javascript - 动态将从 Controller 返回的选择框值呈现为 json

javascript - ReactJS + Material-UI : How to use Material-UI’s FlatButton and Dialog in each TableRow?

javascript - 将登录页面集成到hugo

Javascript camel case split for json 结果

javascript - 在 Laravel 中使用 Ajax 在引导模式上显示数据库