javascript快捷键功能,但在文本框中忽略

javascript快捷键功能,但在文本框中忽略,javascript,Javascript,我设置了一键跳过/更改页面功能。 但当用户想要在输入文本或文本区域中键入“0”时,一键函数也会起作用并切换到另一个页面 当用户使用文本输入或文本区域时,如何忽略此java脚本 document.onkeydown=nextpage; function nextpage(){ var event=document.all?window.event:arguments[0]; if (event.keyCode==13) location="#skipcontent"; if (e

我设置了一键跳过/更改页面功能。 但当用户想要在输入文本或文本区域中键入“0”时,一键函数也会起作用并切换到另一个页面

当用户使用文本输入或文本区域时,如何忽略此java脚本

document.onkeydown=nextpage; 
function nextpage(){
  var event=document.all?window.event:arguments[0]; 
  if (event.keyCode==13) location="#skipcontent"; 
  if (event.keyCode==48) location="contact-us.php";
} 

检查
target
元素以查看事件的目标元素:

document.onkeydown=nextpage; 
function nextpage(e){
  var event = document.all ? window.event : e;
  switch (e.target.tagName.toLowerCase()) {
    case "input":
    case "textarea":
    case "select":
    case "button":
    // ...and so on for other elements you want to exclude;
    // list of current elements here: http://www.w3.org/TR/html5/index.html#elements-1
      break;
    default:
      if (event.keyCode==13) location="#skipcontent"; 
      if (event.keyCode==48) location="contact-us.php";
      break;
  }
}
或者,您可以使用正则表达式替代
开关

document.onkeydown=nextpage; 
function nextpage(e){
  var event = document.all ? window.event : e;
  if (!/^(?:input|textarea|select|button)$/i.test(e.target.tagName)) {
    if (event.keyCode==13) location="#skipcontent"; 
    if (event.keyCode==48) location="contact-us.php";
  }
}


旁注:您可以考虑使用
addEventListener
,它在所有现代浏览器上都受支持,并且允许每个元素的每个事件都有多个处理程序。如果您必须支持IE8,可以使用一个函数返回到
attachEvent
,并为您处理事件对象洗牌。

谢谢!!看起来很好。谢谢你的帮助。