iOS 9 - 键盘事件未触发

kel*_*dar 9 javascript jquery onkeyup keyup ios9

是否有其他人keyup在iOS 9 中遇到问题没有解雇?

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

<input id="txtInput" />
Run Code Online (Sandbox Code Playgroud)

香草JS:

document.getElementById('txtInput').onkeyup = function () {
    console.log('keyup triggered');
}
Run Code Online (Sandbox Code Playgroud)

jQuery的:

$('#txtInput').on('keyup', function () {
    console.log('keyup triggered');
});
Run Code Online (Sandbox Code Playgroud)

既不火......

kel*_*dar 0

这并不漂亮,但解决方法是绑定到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);
        });
}());
Run Code Online (Sandbox Code Playgroud)

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

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

input如果按下 Enter (13) 键,您还可以手动触发事件;input默认情况下,此键不会触发。