jKey jQuery плагин ошибки в IE6 / 7, пытаясь запустить каждый раз, когда нажата неиспользуемая клавиша.Как бороться? - PullRequest
1 голос
/ 15 августа 2011

Я использую плагин jKey jQuery для текущего проекта. Это просто позволяет вам легко запустить функцию нажатием клавиши. Вот мой вызов функции:

jQuery(document).jkey('left, right',function(key){
    if(key == 'left'){
        if (elementIndex == 0) { return; }
        question_nav(jQuery('.question-fieldset-active'), 'prev');
    } else {
        if ((elementIndex + 1) == jQuery('.question-fieldset').length) { return; }
        question_nav(jQuery('.question-fieldset-active'), 'next');
    }
});

В IE6 и 7 нажатие любой другой клавиши на клавиатуре, кроме стрелок влево или вправо, приводит к появлению неприятного сообщения об ошибке: «indexOf» является нулевым или нет объектом ». Есть ли способ перехватить все другие нажатия клавиш и вернуться; на них, чтобы этого избежать?

Ответы [ 2 ]

1 голос
/ 02 ноября 2011

На самом деле это ошибка самого jKey. Я нашел эту ошибку, когда пытался использовать в проекте. Это была классическая проблема с циклическим просмотром массива как объекта:

строка 224 : for(y in keySplit[x]) при версия GitHub

Решение состоит в том, чтобы пройти массив как традиционный цикл:

for(var i = 0; i < keySplit.length; ++i)

Таким образом, вы можете сделать это вручную или получить фиксированную версию jquery.jkey.js из моего Google Code revision

0 голосов
/ 15 августа 2011

Вместо того, чтобы просто использовать else проверку состояния для key == 'right', которая также может вам помочь.

jQuery(document).jkey('left, right',function(key){
    if(key == 'left'){
        if (elementIndex == 0) { return; }
        question_nav(jQuery('.question-fieldset-active'), 'prev');
    } else if(key == 'right') {
        if ((elementIndex + 1) == jQuery('.question-fieldset').length) { return; }
        question_nav(jQuery('.question-fieldset-active'), 'next');
    }
});
...