iOS 9 - keyup event not firing

keldar

Is anybody else having problems with the keyup event in iOS 9 not firing?

Just a simple test bed replicates the issue for me.

<input id="txtInput" />

Vanilla JS:

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

jQuery:

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

Neither fire...

keldar

It's not pretty, but a work around is to bind to keydown to capture which key has been pressed, and input if you want to obtain the value, including the key typed:

(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);
        });
}());

If you type 'a' the following occurs:

  1. keydown fires.
  2. e.keyCode is set to the ASCII value of the key pressed.
  3. this.value is '' (i.e. the same before 'a' has been typed).
  4. input fires.
  5. e.keyCode is undefined.
  6. this.value is 'a'.

You can also manually trigger an input event if the enter (13) key is pressed; input isn't fired by this key by default.

Collected from the Internet

Please contact [email protected] to delete if infringement.

edited at
0

Comments

0 comments
Login to comment

Related