Jquery KeyPress不起作用

时间:2011-07-07 17:25:49

标签: javascript jquery

知道为什么这在任何浏览器上都不起作用吗?

如果我在jsfiddle中尝试它,它可以工作。

$('#input_area').keypress(function(e) {
    if(e.which == 13) {
        alert('You pressed enter!');
    }
});

HTML

<script type="text/javascript" src="counts.js"></script>
<script type="text/javascript" src="jquery-1.6.2.min.js"></script>
</head>

<body>
<input type="text" id="input_area"/>

</body>

JS

$(document).ready(function() {
$('#input_area').keypress(function(e) {
    if(e.which == 13) {
        alert('You pressed enter!');
    }
});
});

4 个答案:

答案 0 :(得分:4)

我准备打赌你没有将它包装在实际应用程序中document.ready处理程序中的5块钱,jsfiddle默认执行该操作:

$(function() {
    $('#input_area').keypress(function(e) {
        if(e.which == 13) {
            alert('You pressed enter!');
        }
    });
});

另一种可能性是您忘记引用jQuery或者您从错误的URL引用它。

答案 1 :(得分:0)

可能未实现which属性,具体取决于浏览器。您还应该检查keyCode

 $(document).ready(function() { 
    $("#input_area").keypress(function (e) {
       if ((e.which && e.which == 13) || (e.keyCode && e.keyCode == 13)) {
         alert('You pressed enter!');
       }
    });
 });

答案 2 :(得分:0)

如果在jsfiddle中运行时有效,那么它可以工作。我怀疑你还没有加载dom时尝试注册keypress监听器,而input_area还没有。将它包装在$(document).ready:

$(document).ready(function() {
    $('#input_area').keypress(function(e) {
        if (e.which == 13) {
            alert('You pressed enter!');
        }
    });
});

答案 3 :(得分:0)

尝试使用绑定,

$('#input_area').bind('keypress', function(e){
    alert(e.which);
});