我正在尝试使用document.onkeyup制作导航系统,其中按键盘上的左箭头将用户转发到之前的ID,右箭头转发到下一个ID。
我还想使用R键将人们带到一个随机ID,但是还有一个搜索和登录表单,所以当用户按下R键时,他们会被转发到另一个页面。
我该如何避免这种情况?
这是我的代码
$AddToSite_JavaScript = '<script>
document.onkeyup=checkKeycode;
function checkKeycode(e)
{
var keycode;
if(window.event) keycode=window.event.keyCode;
else if(e) keycode=e.which;
if(keycode=="37") window.location.href=\''. $WebsiteRoot ."/". $PreviousId ."-". $PreviousTitle .'\';
else if(keycode=="39") window.location.href=\''. $WebsiteRoot ."/". $NextId ."-". $NextTitle .'\';
else if(keycode=="13" || keycode=="82") window.location.href=\''. $WebsiteRoot ."/random" .'\';
}
</script>';
答案 0 :(得分:1)
这部分代码:
> var keycode;
> if(window.event) keycode=window.event.keyCode;
> else if(e) keycode=e.which;
会更好:
var keycode, target;
e = e || window.event;
if (e) {
keycode = e.keyCode || e.which
target = e.target || e.srcElement;
}
请注意,event.srcElement
是特定于IE的,符合W3C标准的浏览器支持event.target
。
现在target
是其处理程序称为函数的元素,所以稍后你可以这样做:
... && target.tagName.toLowerCase() != 'input' ...
答案 1 :(得分:0)
如果您只使用文本输入:在keycode=="82"
之后抛出以下代码就可以了:
&& e.srcElement.tagName != "INPUT"
基本上,它只是检查键击是否来自输入框。
如果您不想按输入来触发它:将现有代码放入()然后添加。