Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript IE6/7中的jKey jQuery插件错误,试图在按下任何未使用的键时运行。如何对抗?_Javascript_Jquery_Jquery Plugins_Jkey - Fatal编程技术网

Javascript IE6/7中的jKey jQuery插件错误,试图在按下任何未使用的键时运行。如何对抗?

Javascript IE6/7中的jKey jQuery插件错误,试图在按下任何未使用的键时运行。如何对抗?,javascript,jquery,jquery-plugins,jkey,Javascript,Jquery,Jquery Plugins,Jkey,我正在当前项目中使用jKey jQuery插件。它只允许您在按键时轻松运行功能。下面是我的函数调用: jQuery(document).jkey('left, right',function(key){ if(key == 'left'){ if (elementIndex == 0) { return; } question_nav(jQuery('.question-fieldset-active'), 'prev'); } else {

我正在当前项目中使用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和IE7中,除了左箭头或右箭头外,按下键盘上的任何其他键都会抛出一个令人讨厌的“错误消息:‘indexOf’为空或不是对象”错误。是否有办法捕获所有其他按键并返回;为避免出现这种情况,请检查
键=='right'
的条件,而不是仅使用
else
,这可能会对您有所帮助

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

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

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

第224行:
用于(y在键槽[x]中的位置)

解决方案是像传统循环一样遍历阵列:

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

所以你可以手动操作,或者从我的

中获得“jquery.jkey.js”的固定版本,实际上这是jkey本身的错误。我在项目中尝试使用时发现了这个bug。这是作为对象在数组中循环的典型问题:

第224行:
用于(y在键槽[x]中的位置)

解决方案是像传统循环一样遍历阵列:

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

因此,你可以手动执行,或者从我的

中获得“jquery.jkey.js”的固定版本。我是jkey的开发者,@shankarsangli回答下面的问题是否有帮助?如果不是的话,可能是一些bug。我不再真正支持IE6了,但我可以看看在IE8或其他浏览器中是否会出现同样的错误,如果是,请更正。看看这段代码是否有帮助。几天前我做了一些编辑。我目前没有IE6/7要测试,但请告诉我它是否有帮助:我是jKey的开发者,@shankarsangli回答下面的问题是否有帮助?如果不是的话,可能是一些bug。我不再真正支持IE6了,但我可以看看在IE8或其他浏览器中是否会出现同样的错误,如果是,请更正。看看这段代码是否有帮助。几天前我做了一些编辑。我目前没有IE6/7可供测试,但请告诉我它是否有帮助: