【问题标题】:iOS 9 - keyup event not firingiOS 9 - keyup 事件未触发
【发布时间】:2016-01-14 04:08:24
【问题描述】:

还有其他人对 iOS 9 中的 keyup 事件没有触发有问题吗?

只是一个简单的测试台为我复制了这个问题。

<input id="txtInput" />

原版 JS:

document.getElementById('txtInput').onkeyup = function () {
    console.log('keyup triggered');
}

jQuery:

$('#txtInput').on('keyup', function () {
    console.log('keyup triggered');
});

不火...

【问题讨论】:

  • 屏幕或外接键盘?你确定它只是iOS 9?见:stackoverflow.com/q/9940829/594235
  • 在屏幕上。是的 100% - 该事件在 iOS 8 及之前版本和 Android 中触发。谢谢 - 正在寻找。
  • 遇到了同样的问题。到目前为止有任何修复吗?
  • 嗯,这不是很好 - 但我已经在下面回答了这个问题;它有效...

标签: javascript jquery ios9 keyup onkeyup


【解决方案1】:
$('#yourid').bind('keypress', function(e) {
    // This will work
});

【讨论】:

    【解决方案2】:

    我建议在带有触摸屏的浏览器上使用keypress 事件。不过,我知道you can't really detect touch screen screens,因此它为您提供了一些您的情况可能决定的选项。

    1. 附加两个事件keyupkeypress。这可能取决于正在进行的处理量以及您是否在某些浏览器中遇到双重问题。
    2. 尝试确定浏览器是否为触摸屏(如使用Modernizr),然后附加一个后备处理程序,如change

    无论哪种方式,您最终都会得到两个事件侦听器。

    【讨论】:

      【解决方案3】:

      这不是很漂亮,但一种解决方法是绑定到keydown 以捕获已按下的键,如果要获取值,则绑定到input,包括键入的键:

      (function () {
          var keyCode;
      
          $('#txtInput')
              .on('keydown', function (e) {
                  // value not updated yet
                  keyCode = e.keyCode;
      
                  // Enter key does not trigger 'input' events; manually trigger it
                  if (e.keyCode === 13) $(this).trigger('input');
              })
              .on('input', function (e) {
                  console.log(keyCode, this.value);
              });
      }());
      

      如果您键入“a”,则会发生以下情况:

      1. keydown 着火了。
      2. e.keyCode 设置为按下的键的 ASCII 值。
      3. this.value''(即在输入“a”之前相同)。
      4. input 着火了。
      5. e.keyCodeundefined
      6. this.value'a'

      如果按下回车 (13) 键,您也可以手动触发input 事件; input 默认不会被这个键触发。

      【讨论】:

        猜你喜欢
        • 2023-03-19
        • 2012-02-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-04-25
        • 1970-01-01
        • 1970-01-01
        • 2022-10-14
        相关资源
        最近更新 更多