这是第一次,我正在处理mobile Apps
。keyUp
事件未触发如果我按backspace
按钮。
我做了一个jsFiddle作为参考。
最初用户输入了23
,然后用户使用退格按钮删除了3
。虽然输入23
事件但是删除时间事件未触发。
我正在使用device : motorola motog,Android Version:4.4.2
。
我该如何解决这个问题,任何人都可以帮我一个示例代码。
答案 0 :(得分:17)
问题出在Chrome停止触发"退格"自Android 4.4起。这在许多基于webview的应用程序中存在问题,以捕获所需的事件。通过使用input
事件可以轻松解决这个问题,只要用户输入内容,粘贴某些内容或点击某些事件即可触发。{34}。"键盘上的按钮等
如果您只想捕获输入的更改,最好依赖input
事件。如果要阻止默认操作,则无效。
对于你的情况,我认为它应该适合。但请注意,早于Android 4版本支持此活动。
答案 1 :(得分:2)
作为解决方案,您可以避免使用'输入'事件,如@aravind所述。 问题是输入'事件不适用于< = ie9和一些移动歌剧设备。当然,您可以使用浏览器支持检测,例如modernizr或简单snippet,并使用支持keyUp / input事件。
另一方面,您可以将所有事件一起使用,浏览器将自行决定使用哪一个事件。问题是 - 在这种情况下,回调函数将在支持这两个事件的现代浏览器中调用两次。
解决方法是使用去抖功能来防止双重调用。
$('.parent').on('change keydown input', _.debounce(function() {
// whatever
}, 0));
请注意,我使用keydown事件而不是keyup,因为我将延迟设置为0毫秒,因此keyup将在稍后调用,而_.debounce无法提供帮助。