您需要使用 'input' 事件而不是 'keyup'
键盘事件(HTML5)的顺序是keydown->keypress->input->keyup。
输入事件将缺少一些 keyup 也传递的属性,例如 keyCode / metaKey/shiftKey/altKey
我用了:
var inputEV = 'oninput' 在窗口中?'输入':'keyup'
在 Silk 浏览器中定义触发我的自动完成调用的事件。
在 jsfiddle 上使用 jQuery 代码来测试它。
(function($){
$(document).ready(function(){
var inputEV = 'oninput' in window ? 'input' : 'keyup';
$('#listen').on(inputEV,function(event){
$('#show').val($('#show').val()+'\n'+event.type);
console.log('--- input event ----');
for(var v in event.originalEvent){
if(event.hasOwnProperty(v)){
console.log(v+' |--> '+event[v]);
}
}
})
//just added to see what Silk listens for on the keyup event
$('#listen').on('keyup',function(event){
$('#show').val($('#show').val()+'\n'+event.type+' | which --> '+event.which);
console.log('--- keyup event ----');
for(var v in event.originalEvent){
if(event.hasOwnProperty(v)){
console.log(v+' |--> '+event[v]);
}
}
})
});
})(jQuery);
jsfiddle上的链接:
http://jsfiddle.net/visionmonster/eJJna/embedded/result/
与最初的问题一样,我只能让 Silk 浏览器收听删除/输入的键位
HTML5 规范:
http: //www.whatwg.org/specs/web-apps/current-work/#handler-oninput