iOS 8第三方键盘don't注册javascript/jQuery keyup、keypress、keydow

iOS 8 3rd party keyboards don't register javascript/jQuery keyup, keypress, keydown etc

本文关键字:javascript jQuery keyup keypress 注册 keydow 键盘 第三方 don iOS      更新时间:2023-09-26

当使用像Swiftkey这样的第三方键盘时,像keypress这样的javascript事件不会注册。例如,谷歌地图自动完成功能不起作用https://developers.google.com/maps/documentation/javascript/examples/places-autocomplete

看起来像是iOS的一个bug,但我有什么想法可以绕过它吗?

您可以手动触发按键事件。

$textBox = $('#text_box') // We don't want to search the dom more than we have to.
setInterval(function(){
    $textBox.trigger('keypress')
}, 500)

这绝对是一个混乱的解决方案,但它应该让自动完成以及其他等待按键的处理程序发挥作用。

这样行吗?

jQuery('#text_box').on('input propertychange paste', function() {
    // text has changed...
});

JSFIDDLE

我使用setInterval找到了一个解决方案,并从这里找到了答案触发谷歌位置自动完成

setInterval(function() {
if ($('input#mapSearch').is(':focus')) {
google.maps.event.trigger(document.getElementById('mapSearch'), 'focus', {});
}
}, 500);