关键事件不发射
有没有其他人在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
事件。 我知道你不能真正检测触摸屏,所以它会给你留下一些你的情况可能会导致的选择。
keyup
和keypress
。 这可能取决于正在进行多少处理,以及是否在某些浏览器中发生了双重火灾。 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
。