2011-06-04 74 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; 
    /* ... */ 
} 
相关问题