2

我正在尝试捕获文本输入上的输入事件。使用 jQuery 我正在处理keyup事件以填充匹配列表(自动完成列表)。这在股票浏览器和 Maxthon 等其他浏览器上运行良好,但在 Firefox 移动版中,显示键盘时没有任何反应——我必须按 Enter 或隐藏键盘才能正常工作。

我正在使用 jQuery 1.7.2、Android 2.3 和最新版本的 Firefox(我相信是 10)。input我还尝试过其他事件,例如keydown没有任何运气。

显示键盘时是否可以在 Firefox 移动版中处理键/输入事件?

4

1 回答 1

2

问题是,当在 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();
于 2013-01-08T09:47:37.703 回答