关键事件不发射

有没有其他人在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');
});

既不火...


我建议在带有触摸屏的浏览器上使用keypress事件。 我知道你不能真正检测触摸屏,所以它会给你留下一些你的情况可能会导致的选择。

  • 附加两个事件keyupkeypress 。 这可能取决于正在进行多少处理,以及是否在某些浏览器中发生了双重火灾。
  • 尝试确定浏览器是否是触摸屏(如使用Modernizr),然后附加像change一样的后备处理程序。
  • 无论哪种方式,你最终都会有两个事件监听器。


    $('#yourid').bind('keypress', function(e) {
        // This will work
    });
    

    这不是很漂亮,但周围的工作是绑定到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”,则会发生以下情况:

  • keydown火灾。
  • e.keyCode被设置为所按键的ASCII值。
  • this.value'' (即在输入'a'之前是相同的)。
  • input火灾。
  • e.keyCode undefined
  • this.value'a'
  • 如果按下输入(13)键,您也可以手动触发input事件; 默认情况下,此键不会触发input

    链接地址: http://www.djcxy.com/p/88197.html

    上一篇: keyup event not firing

    下一篇: Label wrapping with StackLayout