身上的keydown?

时间:2010-02-09 02:25:40

标签: javascript jquery

每当我按下一个键,我都会收到提醒。

我试过了:

$('body').live('keyup', function() {
     alert('testing');
});

但它不起作用,是不是因为选择器?

更新:

这是我的代码:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
        <title>TODO supply a title</title>
        <script type="text/javascript" src="../system/media/js/jquery/jquery.js"></script>
        <script type="text/javascript">  
            $(document).ready(function() {
                $('body').live('keyup', function() {
                    alert('testing');
                });   
            });   
        </script>
    </head>
    <body>
        <p>
            TODO write content
        </p>
    </body>
</html>
当我用keyup替换mouseover并将鼠标移到TODO write content

时,我按下某个内容时不会提醒我

为什么不起作用?

5 个答案:

答案 0 :(得分:7)

尝试使用$("html")$("*")代替$("body")。为了激活身体上的keyUp事件,必须关注身体节点或其中一个孩子。您可以在示例中通过添加文本输入并将鼠标聚焦到该输入来完成此操作。你真正想要的是捕获任何按键,所以$("html")应该有效。

编辑:我认为您的示例可能有效,但无论如何,要有条件地运行逻辑,您可以尝试这样做:

if ($(document.body).is(".focusOnKeypress")) {
   $("html").live(...);
}

或者,我认为这也有效:

$("body:not(.noFocusOnKeypress)").parent("html").live(...);

答案 1 :(得分:4)

只听窗口!

$(window).keydown(function(event){
    alert(event.keyCode);
});

答案 2 :(得分:2)

我试过这段代码。这很好。

$('body').on('keyup', function() {
     alert('testing');
});

答案 3 :(得分:0)

它不起作用,因为你的页面没有焦点..你需要先点击页面然后它才能工作..

或者你可以强制将焦点设置为输入元素,从而将焦点带到页面上。

$(function(){ $('input_selector_here').focus(); });

答案 4 :(得分:0)

希望这会有所帮助。

$(document.body).on('keyup', function (e) {
    alert('In');
}):