в Firefox не работает keydown - PullRequest
       9

в Firefox не работает keydown

0 голосов
/ 06 февраля 2012
 <script>
        function MoveNext(e, obj) {

            if (!e) var e = window.event;

            if (e.keyCode) code = e.keyCode;

            else if (e.which) code = e.which;
            if (code == 13) {

                document.getElementById(obj).focus();

                return false;
            }
   </script>

приведенный выше код работает в IE, но не в Mozilla, почему

Ответы [ 2 ]

0 голосов
/ 06 февраля 2012

измените

if (e.keyCode) code = e.keyCode;
else if (e.which) code = e.which;

на

code = (e.keyCode)? e.keyCode: e.charCode;

и убедитесь, что вы передаете событие в moveNext при вызове, потому что firefox распознает событие, только если вы отправили его явно изфункция.

также, если ваш объект, который вы используете keydown, является div, добавьте к нему tabindex 0, чтобы он мог получить фокус.

<div id="mydiv" tabindex="0"></div>
0 голосов
/ 06 февраля 2012

Точный код клавиши возврата зависит от того, какое событие клавиатуры вы слушаете (нажатие клавиши, нажатие клавиши, нажатие клавиши).Для нажатия клавиш вы можете сделать это следующим образом:

function MoveNext(e, obj) {
    e = e || window.event;
    var code = e.which || e.keyCode;
    if (code == 13) {
        document.getElementById(obj).focus();
    }
}

Примечание: я удалил вашу локальную переменную e, чтобы она не путалась с аргументом e, и я определил code как локальная переменная, которая у вас была как неявная глобальная переменная (никогда не бывает хорошей вещью).

Подробнее об обработке ключей между браузерами описано здесь: код клавиши и кодовый код .

...