jQuery - keydown () на div не работает в Firefox

У меня есть следующий пример кода, который должен выдать предупреждение, когда div находится в фокусе и нажата клавиша. Это делает то, что я ожидаю в IE 7, но не в Firefox 3.5.5. Что я делаю неправильно?



    JS test
    
    
        $(document).ready(function() {
            $("#testdiv").keydown(function(event) {
                alert("Pressed " + event.keyCode);
            });
        });
        
    
        #testdiv
        {
            width: 50;
            height: 50;
            background-color: red;
        }
    


    


РЕДАКТИРОВАТЬ: Ямы только что попытались заменитьkeydown сkeypress а такжеkeyup и те, кто нетоже не работает. Я, кстати, тоже убедился, что мой "Найти, как вы печатаете настройка отключена на всякий случай.

 Derek 朕會功夫19 сент. 2011 г., 02:08
 тоже не стреляетkeydown событие, и это доставило мне много головной боли ...
 Wayne Koorts11 нояб. 2009 г., 21:52
@Matt: Только что попробовал и обновил вопрос, спасибо.
 Matt Ball11 нояб. 2009 г., 21:44
Вы пробовали использовать нажатие клавиш или вместо этого?

Ответы на вопрос(7)

Решение Вопроса

Вам нужно дать div tabindex, чтобы он мог получить фокус.


 Richard Garside11 нояб. 2009 г., 22:08
Здорово. Рад, что вы'отсортировано
 Derek 朕會功夫19 сент. 2011 г., 02:08
Простоtabindex спас мой день
 user186276415 дек. 2013 г., 12:16
Отличный ответ .. яя потратил несколько часов, пытаясь это исправить, пока не нашел ответ ... палец вверх ..
 e-info12806 авг. 2013 г., 22:38
Отлично! благодарю вас!
 minerva23 янв. 2015 г., 19:17
также полезно для angularjs ng-keydown. <div ng-controller = "TestController» нг-KeyDown =»keyMovement ($ событие)» TabIndex = "0">
 Rutwick Gangurde22 июл. 2013 г., 15:19
Большой! Просто, но элегантно!
 Wayne Koorts11 нояб. 2009 г., 22:06
Фантастика! Большое спасибо!
 whitesiroi21 февр. 2019 г., 09:40
@RichardGarside о боже, спасибо большое, я боролась пару часов, пока не нашла ваш ответ. Если ты собираешься быть в Токио - дай знать, купишь медведя;)

что это сработает, поскольку div - это не то, что должно получать такие ключевые события. Если вы поместили <вход> внутри этого div, и пользователь нажал клавишу в самом вводе, событие будет всплывать до div и запускать вашу функцию. Я'Я не уверен на 100% в том, что делает ваш проект, поэтому я нене знаю, как дать вам больше советов, но хотя я не долженя будуЯ немного удивлен, что IE запускает событие keydown для div.

Вы можете проверить онлайн здесьИсходный код


    JS test
    
        $(document).ready(function() {
            $("#testdiv").keydown(function(event) {
                alert("Pressed " + event.keyCode);
            });
        });
        
    
        #testdiv
        {
            width: 50px;
            height: 50px;
            background-color: red;
        }
    


    


$('#tbl tbody').attr("tabindex", 1).focus();
$('#tbl tbody').keydown(function (event) {
    ...
});

используя последнюю версию 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 */
}

$('#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 ключевые события запускаются очень хорошо.

Это из-за версии jQuery. пытатьсяhttp://code.jquery.com/jquery-latest.js как источник

Ваш ответ на вопрос