2015-11-06 41 views
1

三星軟鍵盤上的預測文字功能導致Typeahead字段出現奇怪問題。使用三角形軟鍵盤在PhoneGap上使用角帶式打字機時出現異常行爲

我正在構建一個角度應用程序,並使用angular-strap for typeahead字段。然後我使用PhoneGap將其轉換爲iOS和Android應用程序。

問題只發生在預測性文本打開時,它以某種方式與預先輸入字段交互,導致字符重複,所以如果在輸入「v」時鍵入「adv」,輸入會從「ad」更改爲「 adadv」。它還會在刪除時創建一個奇怪的行爲,它會在每次刪除後將光標移動到單詞的末尾。因此,要刪除示例中的第一個廣告,我必須在d之後設置光標,刪除,然後將光標設置在a之後。

我只在使用應用程序時遇到此問題,如果我在手機的瀏覽器中打開角度應用程序,typeahead字段可以正常工作。

我也只在Galaxy S6 Edge +和三星鍵盤上看到這個。在Galaxy Note 2上,使用三星鍵盤和預測文本,它可以工作。在Moto E Google鍵盤上,它可以工作。

我試着將屬性autocomplete =「off」添加到typeahead輸入中,但我非常確定該屬性只被瀏覽器使用。無論如何,它並沒有解決我的問題。

有沒有什麼辦法可以防止預測文本與現場交互?

+0

我有這個相同的問題。運氣好的話? –

+0

它影響的設備太少,無法保證我們現在花更多時間,所以我們只是告訴用戶,如果它與預先輸入的字段衝突,他們需要禁用他們的設備預測文本。 – mike

+0

我主要在數字字段上遇到此問題。我在某處讀到數字字段的解決方法,將它們設置爲type =「tel」,並且在這種情況下,預測文本顯然會關閉。這幫助了我,但不幸的是你不會幫助你。 –

回答

0

我發現將setTimeout添加到typeahead的_onInput方法可以修復此問題。

在typeahead.jquery.js,我代替:

_onInput: function onInput() { this._setQuery(this.getInputValue()); this.clearHintIfInvalid(); this._checkLanguageDirection(); }

有:

_onInput: function onInput() { var self = this; setTimeout(function() { self._setQuery(self.getInputValue()); self.clearHintIfInvalid(); self._checkLanguageDirection(); }, 0); }

這使得鍵盤/瀏覽器的預輸入代碼踢之前,做它的事(如果你在調試器中運行它,你可以在這段時間看到文本改變)。

這不是一個很好的解決方案,因爲如果你有新的typeahead版本,你將不得不重做一遍。我將替換作爲構建過程的一部分,這有助於一些,但更好的解決方案是提交拉取請求。我不太瞭解這個項目,所以不知道作者是否想要做出這樣的改變。