keyup event not firing
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...
I suggest using the keypress
event on browsers with touch screens. I know that you can't really detect touch screen screens, though, so it leaves you with a few options that your situation will likely dictate.
keyup
and keypress
. This would likely be dependent on how much processing is going on and if you are getting double-fires in some browsers. change
. Either way, you end up with two event listeners.
$('#yourid').bind('keypress', function(e) {
// This will work
});
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:
keydown
fires. e.keyCode
is set to the ASCII value of the key pressed. this.value
is ''
(ie the same before 'a' has been typed). input
fires. e.keyCode
is undefined
. 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.
上一篇: 关于字体文件(.eot .svg .ttf .woff和.woff2)的角色和用法
下一篇: 关键事件不发射