【问题标题】:backSpace not firing the keyup event in android mobilebackSpace 未触发 android mobile 中的 keyup 事件
【发布时间】:2014-04-25 13:29:19
【问题描述】:

这是第一次,我正在处理mobile Apps.keyUp 事件如果我按下backspace 按钮则不会触发。

我发了jsFiddle 供参考。

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

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

我该如何解决这个问题,谁能帮助我提供示例代码。

【问题讨论】:

    标签: javascript android mobile backbone.js marionette


    【解决方案1】:

    问题在于 Chrome 从 Android 4.4 开始停止为“退格”触发按键事件。在许多基于 webview 的应用程序中,这一直是个问题,无法捕获所需的事件。使用input 事件可以稍微缓解这一点

    如果您只想捕获对输入的更改,最好依靠input 事件。如果您想阻止默认操作,则它没有用。

    对于你的情况,我认为它应该适合。但请注意,Android 4 之前的版本支持此事件。

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

    【讨论】:

    • 对不起,我没有看到你的消息,我当天自己找到了解决方案,当我发布问题时,我忘记发布答案了。无论如何你说的是对的。我也在使用input event。它的工作魅力。
    • 请记住,空输入将导致输入事件不触发! stackoverflow.com/questions/10004581/…
    【解决方案2】:

    作为解决方案,您可以避免使用“输入”事件,如 @aravind 所述。 问题是 'input' 事件不适用于 modernizr 或简单的snippet 并使用支持keyUp/input 事件。

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

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

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

    请注意,我使用的是 keydown 事件而不是 keyup,因为我将延迟设置为仅 0 毫秒,因此 keyup 将在更晚的时间调用,而 _.debounce 无济于事。

    【讨论】:

      猜你喜欢
      • 2016-01-14
      • 2023-03-19
      • 2012-02-08
      • 1970-01-01
      • 1970-01-01
      • 2016-09-07
      • 2017-08-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多