jQuery-keydown () на div не работает в Firefox
у меня есть следующий пример кода, который должен всплывать предупреждение, когда div находится в фокусе и нажата клавиша. Это делает то, что я ожидаю в IE 7, но не в Firefox 3.5.5. Что я делаю не так?
<html>
<head>
<title>JS test</title>
<script type="text/javascript" src="jquery-1.3.2.min.js"></script>
<script type="text/javascript">
$(document).ready(function() {
$("#testdiv").keydown(function(event) {
alert("Pressed " + event.keyCode);
});
});
</script>
<style type="text/css">
#testdiv
{
width: 50;
height: 50;
background-color: red;
}
</style>
</head>
<body>
<div id="testdiv"></div>
</body>
</html>
редактировать: Я только что попытался заменить keydown
С keypress
и keyup
и они тоже не работают. Кстати, я также убедился, что моя настройка" найти как вы печатаете " отключена на всякий случай.
7 ответов
Я не ожидаю, что это будет работать, так как div-это не то, что должно получать такие ключевые события. Если вы разместили внутри этого div, и пользователь нажал клавишу в самом входе, событие будет всплывать до div и запускать вашу функцию. Я не на 100% уверен в том, что делает ваш проект, поэтому я не знаю, как дать вам больше советов, но, хотя я не должен быть, я немного удивлен, что IE запускает событие keydown на div.
Я получил выше, чтобы работать в Firefox, как это:
$('#domainTableDiv').keydown(function(e) {
alert(e.type + " button(" + e.which + ") ctrl(" + e.metaKey + ") alt(" + e.altKey + ") shift(" + e.shiftKey + ")" );
});
$('#domainTableDiv').focus();
Как только DIV имеет фокус, установленный на нем явно, ключевые события срабатывают просто отлично в Firefox 4.0.1
мы также можем использовать что-то вроде этого:
$('#tbl tbody').attr("tabindex", 1).focus();
$('#tbl tbody').keydown(function (event) {
...
});
вы можете проверить онлайн отсюда
Исходный Код
<html>
<head>
<title>JS test</title>
<script type="text/javascript">
$(document).ready(function() {
$("#testdiv").keydown(function(event) {
alert("Pressed " + event.keyCode);
});
});
</script>
<style type="text/css">
#testdiv
{
width: 50px;
height: 50px;
background-color: red;
}
</style>
</head>
<body>
<div id="testdiv" tabindex="0"></div>
</body>
</html>
Я не мог получить ни один из этих ответов для работы в Firefox 5, используя последний CDN от jquery. Мне нужно было знать, есть ли у одного из детей div ключевые события, поэтому я прибегнул к этому:
$(document).keypress(function(e){
if(!$(e.target).parents().is("#testdiv")) return;
/* do child-of-div specific code here */
}
Если целью является текущий div (и у него есть фокус), я бы предположил, что вы могли бы сделать что-то вроде этого:
$(document).keypress(function(e){
if(!$(e.target).is("#testdiv")) return;
/* do div specific code here */
}
Это из-за версии jQuery. попробовать http://code.jquery.com/jquery-latest.js Источник