如何使用jQuery Mobile在Kindle Fire HD上获得keydown和keyup事件

时间:2013-04-21 16:42:24

标签: jquery jquery-mobile

我只能在新的Kindle Fire HD平板电脑上启动keydown事件以进行删除并输入密钥。

我正在使用内置的Silk浏览器。我可以看到,在Google上,keydown事件正在被解雇。他们是如何让它发挥作用的?

如果我在Silk浏览器中访问键盘测试网站http://unixpapa.com/js/testkey.html,那么它也不会触发。任何人都有解决方法吗?

$("#simpleSearch_input").keydown(function(evt) {
    alert("keydown");
});

1 个答案:

答案 0 :(得分:0)

您需要使用'input'事件而不是'keyup'

键盘事件(HTML5)的顺序是keydown-> keypress-> input-> keyup。

输入事件将缺少keyup也传递的一些属性,例如keyCode / metaKey / shiftKey / altKey

我用过:

在窗口中 var inputEV ='oninput'? 'input':'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