問題は、Androidキーボードで単語の提案がオンになっている場合、値がテキストフィールドに送信されても、キーボードが単語を「推測」している間、Firefoxがキーイベントをトリガーしないことです。これはFirefoxのバグだと思いますが、キーボードがあなたが書いたものとは異なる何かを示唆している場合、押されたキーの結果がフィールドが取得する値と一致しないため、彼らはこの方法を選択したと思います。
値が変更されたかどうかをチェックするスニファを使用して、これを解決しました。
var $searchField;
var _keypressWatchingTimer = 0;
var _previousTerm = '';
function keypressStartWatching() {
keypressStopWatching();
_keypressWatchingTimer = setInterval(executeAutocomplete, 100);
}
function keypressStopWatching() {
if (_keypressWatchingTimer != 0) {
clearInterval(_keypressWatchingTimer);
_keypressWatchingTimer = 0;
}
}
function executeAutocomplete() {
var searchTerm = $searchField.val() || '';
if (_previousTerm == searchTerm)
return false;
searchApi.autocomplete(searchTerm);
_previousTerm = searchTerm;
}
function init() {
$searchField = $('#searchField')
.focus(keypressStartWatching)
.blur(keypressStopWatching)
.keyup(executeAutocomplete);
}
init();