2011-02-10 43 views
0

我正在开发一个使用Wordpress 3.04的网页,并且遇到以下问题: 在此网页中,我实现了一个脚本,每隔10秒左右更改一次背景图片。现在,当用户按下左箭头键和右箭头键时,它会使背景图片相应地来回变化,并扭转旋转周期。如何禁用网页上的特定键盘按键?

这将成为网站联系表单部分的问题,因为可能需要在每个字段内左右导航的用户最终可能会改变背景图片。

我也想禁用“回车”键,以避免表单被发送,如果用户没有写完他们的消息。

我环顾四周,发现这段JavaScript代码,没有工作:

document.onkeydown=function DisableCTRL(e) 
{ 
var val=(document.all)?event.keyCode:event.which; 
if(parseInt(val)==17)//CTRL 
{ 
alert('Not Allowed!'); 
window.event.returnValue=false; 
} 
} 

这JS代码没有工作,要么:

function stopRKey(evt) { 
    var evt = (evt) ? evt : ((event) ? event : null); 
    var node = (evt.target) ? evt.target : ((evt.srcElement) ? evt.srcElement : null); 
    if ((evt.keyCode == 13) && (node.type=="text")) {return false;} 
} 
document.onkeypress = stopRKey; 

任何帮助将不胜感激。谢谢!

+0

网页没有键盘快捷键。你不应该这样做。多么讨厌的网页。如果我在按下某个键后从网页中收到**错误**消息,我会离开,永远不会再回来。 – 2011-02-11 05:22:43

回答

0

我想,你应该调用stop()上传递的事件,即

document.onkeydown = function(e) { 
    if (e.keyCode == 17) { 
    alert('Not Allowed!'); 
    e.stop(); 
    } 
}; 

,也许使用addEventListener()。我不确定,截取Ctrl键实际上会完全转动Ctrl。我想,你需要用ctrlKey属性设置来拦截左/右光标。为了测试关键事件,请参阅http://unixpapa.com/js/testkey.html

PS。的document.all:http://javascript.about.com/od/hintsandtips/a/worst_4.htm

0

你需要调用e.preventDefault()从走在前面停止的事件。我写了这个函数来处理最近一个场所多余按键:

PreventIllegalKeyPress = function (e) { 
if (e.target) t = e.target; //Firefox and others 
else if (e.srcElement) t = e.srcElement; //IE 

if (e.keyCode == 116) { //prevent F5 for refresh 
    e.preventDefault(); 
} 
if (e.keyCode == 122) { //F11 leave fullscreen 
    e.preventDefault(); 
} else if (e.altKey && e.keyCode == 115) { //Alt + F4 
    e.preventDefault(); 
} else if (e.altKey && e.keyCode == 37) { //Alt + left 
    e.preventDefault(); 
} else if (e.altKey && e.keyCode == 39) { //Alt + right 
    e.preventDefault(); 
} else if (e.ctrlKey && e.keyCode == 82) { //Ctrl + R (reload) 
    e.preventDefault(); 
} 
if (!(t.tagName == 'INPUT')) { 
    if (e.keyCode == 13) { //enter 
     e.preventDefault(); 
    } 
    if (e.keyCode == 8) { //backspace 
     e.preventDefault(); 
    } 
}}; 

注意检查为t.tagName ==“INPUT”。这确保输入字段中允许输入和退格键,但不允许在其他位置输入。

然后在$(文件)。就绪,粘贴下面的代码片段调用的函数:

$(document).keydown(function (e) { 

    NFS.PreventIllegalKeyPress(e); 

}); 

这对我工作完全正常。