IEK / 7中的jKey jQuery插件错误,试图在按下任何未使用的键时运行。 怎么打?

我在当前项目中使用jKey jQuery插件。 它只允许您在按键上轻松运行function。 这是我的函数调用:

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’为null或不是对象”错误。 有没有办法捕获所有其他按键并返回; 在他们身上以避免这个?

实际上这是jKey本身的错误。 我试图在项目中使用时发现了这个bug。 这是循环数组作为对象的经典问题:

第224行GitHub修订版中的 for(y in keySplit[x])

解决方案是将数组作为传统循环遍历:

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

所以你可以手动完成它或从我的谷歌代码修订版获得'jquery.jkey.js'的固定版本

而不是只使用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'); } });