2010-11-25 63 views
1

我已经把下面的代码在我的网页在头顶部:为什么页面停止按键?

<script type="text/javascript"> 

     function stopRKey(evt) { 

      console.log(evt.keyCode); 

      var evt = (evt) ? evt : ((event) ? event : null); 

      var node = (evt.target) ? evt.target : ((evt.srcElement) ? evt.srcElement : null); 

      console.log(evt.keyCode); 

      if ((evt.keyCode == 13) && (node.type == "text")) { 
       return false; 
      } 
     } 

     document.onkeypress = stopRKey; 

    </script> 

我的网页上的一个它没有触发事件时,我打进去。但是,我的页面中只有一页似乎工作并记录了13的键码,从而停止了回发。

任何想法,为什么这个事件不会在这个特定页面上触发?

干杯, 皮特

+0

你必须让你的非工作页面的代码的其余部分。 – 2010-11-25 10:29:43

+1

如果此代码适用于大多数网页,则可能是正确的。所以要回答你的问题,你应该发布更多关于它不工作的页面的信息。一种可能性是另一个事件处理程序在文档层次结构的更深层次上进行侦听,以阻止按键事件冒泡。 – Simon 2010-11-25 10:31:46

回答

0

您当然可以简化代码。没有理由为什么不应该工作,为<input type="text">元素:

function stopRKey(evt) { 
    evt = evt || window.event; 
    var node = evt.target || evt.srcElement; 
    console.log(evt.keyCode); 

    if (evt.keyCode == 13 && node.nodeName == "INPUT" && node.type == "text") { 
     return false; 
    } 
} 
0

或许有表格打破网页触发回发,是不是一个文本节点元素。尝试删除阻止提交的第二部分条件,看看会发生什么:

if (evt.keyCode == 13) { 
    return false; 
}