是否有其他人在iOS 9中遇到keyup
事件时遇到问题?
只是一个简单的测试床为我复制了这个问题。
<input id="txtInput" />
Vanilla JS:
document.getElementById('txtInput').onkeyup = function () {
console.log('keyup triggered');
}
jQuery的:
$('#txtInput').on('keyup', function () {
console.log('keyup triggered');
});
既不火......
答案 0 :(得分:3)
我建议在带触摸屏的浏览器上使用keypress
事件。我知道you can't really detect touch screen screens,所以它给你留下了一些你的情况可能要求的选项。
keyup
和keypress
。这可能取决于正在进行的处理量以及是否在某些浏览器中发生双重攻击。change
。无论哪种方式,最终都会有两个事件监听器。
答案 1 :(得分:1)
$('#yourid').bind('keypress', function(e) {
// This will work
});
答案 2 :(得分: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);
});
}());
如果输入“a”,则会发生以下情况:
keydown
开火。e.keyCode
设置为按下的键的ASCII值。this.value
为''
(即在输入“a”之前相同)。input
开火。e.keyCode
是undefined
。this.value
是'a'
。如果按下enter(13)键,您也可以手动触发input
事件;默认情况下,此密钥不会触发input
。