2011-07-07 40 views
2

问题如何在焦点丢失并在IE中重新获得时保持用户对文本输入的选择?

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

CODE

我目前使用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 }; 

详情

我正在在一个非常复杂的自动完成解决方案。使用键盘选择建议很好,因为焦点从来没有从文本输入中丢失。然而,使用鼠标模糊文本输入,然后重新调整它。

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

讨论

我宁愿不必每次移动它(左,右,上,下箭头,向上翻页的的keydown时间节省用户的插入位置/下,退格键,鼠标事件点击等等),似乎应该有一个答案,让我:

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

再一次,这个问题只能在IE中观察到。其他浏览器正确处理此问题。

+0

只是好奇心:你为什么要滚动你自己的autosuggest,而不是使用已经在那里的一千万插件之一? –

+0

我正在使用jQuery UI的自动完成,并没有自己动手。我为这个实现所需的jQuery UI的自动完成添加了功能,并且发现了这种不一致。 jQuery UI的自动完成功能没有这个问题,因为当建议/完成一个术语时,插入符总是在输入结束时重新定位。 –

回答

相关问题