2011-06-04 31 views
2

按鍵事件在Mozilla Firefox中不起作用。 我已經創建了一個動態的表格行,裏面有一個文本boix,而且文本框也有一個按鍵事件。按鍵事件在Mozilla Firefox中不起作用

var el = document.createElement('input'); 
      el.type = 'text'; 
      el.name = 'suggest2'; 
      el.setAttribute("id",str2); 

      el.setAttribute("onkeypress","additemifenter(this.id)"); 
cell2.appendChild(el); 
row.appendChild(cell2); 

在谷歌瀏覽器中調用函數additemifenter(this.id)。但在Firefox中,該功能沒有得到執行。什麼是在Firefox中做到這一點的替代方法?

+0

重複:http://stackoverflow.com/questions/95731/爲什麼這樣做 - onclick-property-set-with-setattribute-fail-to-work-in-ie – davin 2011-06-04 08:54:05

回答

6

也許在最後的分號將有助於

el.setAttribute("onkeypress","additemifenter(this.id);"); 

你爲什麼不使用標準的事件處理模型:

el.onkeypress = function(event){ 
// functionality 
}; 

el.addEventListener("keypress",function(event){ 
// functionality 
},false); 

檢查T.他邀請碼,您必須使用代碼:

var code = (event.keyCode) ? event.keyCode : event.which; 

if(code == 13){ 

} 
+0

感謝您的幫助。實際上該函數正在調用,但檢查不起作用。用於檢查該函數的代碼isif(window.event.keyCode == 13) { \t addingsecrow2(id); } – Varada 2011-06-04 10:43:43

+0

請參閱我的編輯回答 – Headshota 2011-06-04 17:55:57

+0

僅供參考,可以簡化爲'var code = event.keyCode || event.which;' – Andi 2016-11-10 18:18:30

0

這將是更好的分配keyhandler直接元素(el.onkeypress =el.addEventlistener(...)el.attachEvent(...)。在您的屬性分配中,事件丟失。在Firefox中,事件附加到元素,因此event.keyCode將不可用。

如果必須使用setAttribute,這樣的改變:

el.setAttribute("onkeypress","additemifenter(event, this.id)"); 

additemifenter需要看起來像這樣:

function additemifenter(evt, id){ 
    evt = evt || event; 
    /* ... */ 
} 
相關問題