Reputation: 8237
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?
Upvotes: 1
Views: 361
Reputation: 561
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
Upvotes: 1
Reputation: 69915
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');
}
});
Upvotes: 0