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时间节省用户的插入位置/下,退格键,鼠标事件点击等等),似乎应该有一个答案,让我:
- 听一些事件,我可以在模糊发生之前保存脱字符号(onBlur太迟了)。
- 使用不同的方法来确定IE中的用户选择。
再一次,这个问题只能在IE中观察到。其他浏览器正确处理此问题。
只是好奇心:你为什么要滚动你自己的autosuggest,而不是使用已经在那里的一千万插件之一? –
我正在使用jQuery UI的自动完成,并没有自己动手。我为这个实现所需的jQuery UI的自动完成添加了功能,并且发现了这种不一致。 jQuery UI的自动完成功能没有这个问题,因为当建议/完成一个术语时,插入符总是在输入结束时重新定位。 –