开发者

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('.qu开发者_Python百科estion-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 GitHub revision

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 Google Code revision


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

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜