2010-11-25 67 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; 
}