简体   繁体   中英

jKey jQuery plugin errors in IE6/7, attempting to run whenever any un-used key is pressed. How to combat?

I'm using the jKey jQuery plugin on a current project. It just allows you to easily run a function on a key press. Here's my function call:

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');
    }
});

In IE6 and 7, pressing any other key on the keyboard besides the left or right arrows throws a nasty "Error Message: 'indexOf' is null or not an object" error. Is there a way to capture all other key presses and return; on them so as to avoid this?

Actually it's bug of jKey itself. I've found this bug, when tried to use at the project. That was classic problem with looping through array as object:

line 224 : for(y in keySplit[x]) at

The solution is to traverse array as traditional loop:

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

So u can do it manually or get fixed version of 'jquery.jkey.js' from my 版中获取“jquery.jkey.js”的固定版本

Instead of just using else condition check for key == 'right' as well that might help you.

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');
    }
});

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM