当焦点在IE中丢失并重新获得时,我如何坚持用户对文本输入的选择



问题

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

代码

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

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选择的工作方式有点不同。看看这个小提琴:http://jsfiddle.net/KC48j/11/

最新更新