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

标签 jquery jquery-mobile

我只能在新的 Kindle Fire HD 平板电脑上触发 keydown 事件来执行删除和输入键。

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

如果我访问像 http://unixpapa.com/js/testkey.html 这样的键盘测试网站在 Silk 浏览器中,它也不会触发。有人有解决办法吗?

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

最佳答案

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

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

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

我用过:

var inputEV = 'oninput' 在窗口中? '输入' : '键盘'

定义在 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

关于jquery - 如何使用 jQuery Mobile 在 Kindle Fire HD 上获取 keydown 和 keyup 事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16133560/

相关文章:

jquery-mobile - 在 jQuery Mobile 中删除 slider 控件中的文本框

javascript - innerWidth 在手机上没有得到正确的宽度

jquery - 我应该如何在 Jquery Mobile 中使用 rel ="canonical"?

带有 jquery.push 的 Javascript 全局数组在备用函数中返回空数组

javascript - $.getJSON 在 IE10 中不工作,

javascript - 滚动时只播放 CSS 动画

javascript - 如何让这样的代码在 JsFiddle.net 中运行?

javascript - 将 bool 值从 Javascript 转换为 Django?

jQuery Mobile - 无法将 pagebeforechange 绑定(bind)到页面 id?

javascript - 使用 jQuery 在页面加载时淡入图片