backSpace没有在android手机中触发keyup事件

时间:2014-03-19 10:55:11

标签: javascript android mobile backbone.js marionette

这是第一次,我正在处理mobile AppskeyUp事件未触发如果我按backspace按钮。

我做了一个jsFiddle作为参考。

最初用户输入了23,然后用户使用退格按钮删除了3。虽然输入23事件但是删除时间事件未触发。

我正在使用device : motorola motog,Android Version:4.4.2

我该如何解决这个问题,任何人都可以帮我一个示例代码。

2 个答案:

答案 0 :(得分:17)

问题出在Chrome停止触发"退格"自Android 4.4起。这在许多基于webview的应用程序中存在问题,以捕获所需的事件。通过使用input事件可以轻松解决这个问题,只要用户输入内容,粘贴某些内容或点击某些事件即可触发。{34}。"键盘上的按钮等

如果您只想捕获输入的更改,最好依赖input事件。如果要阻止默认操作,则无效。

对于你的情况,我认为它应该适合。但请注意,早于Android 4版本支持此活动。

更新了小提琴 - http://jsfiddle.net/aravindbaskaran/33Snz/24/

答案 1 :(得分:2)

作为解决方案,您可以避免使用'输入'事件,如@aravind所述。 问题是输入'事件不适用于< = ie9和一些移动歌剧设备。当然,您可以使用浏览器支持检测,例如modernizr或简单snippet,并使用支持keyUp / input事件。

另一方面,您可以将所有事件一起使用,浏览器将自行决定使用哪一个事件。问题是 - 在这种情况下,回调函数将在支持这两个事件的现代浏览器中调用两次。

解决方法是使用去抖功能来防止双重调用。

$('.parent').on('change keydown input', _.debounce(function() {
    // whatever
}, 0));

请注意,我使用keydown事件而不是keyup,因为我将延迟设置为0毫秒,因此keyup将在稍后调用,而_.debounce无法提供帮助。