2011-07-07 23 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的自動完成功能沒有這個問題,因爲當建議/完成一個術語時,插入符總是在輸入結束時重新定位。 –

回答

相關問題