2013-02-20 123 views
0

我有JavaScript创建一个通用选择框,当您双击表格单元格中,当一个选项被单击时,选择框被删除,选定的选项被记录下来。表格单元格显示所选的选项。但是,如果表格单元格被双击并且创建了选择框,但是您只是在没有选择选项的情况下单击选择框,则选择框将保持不变,并且随后页面的其余部分将断开。在Javascript中选择框触发事件

我想要选择框被删除,如果焦点丢失,但与输入框一起工作的onblur方法似乎不适用于选择框。

有谁知道什么事件被触发?

Javascript代码,当表格单元格被双击做出一个选择框:

var object_input = document.createElement ("SELECT"); //Put an select box in the cell 

object_input.setAttribute("name", "course_price_select"); 
object_input.setAttribute("id", "course_price_select"); 
object_input.style.width = (current_cell.clientWidth - 20) + "px"; 

object_input.attachEvent ("onblur", focus_lost); 
object_input.attachEvent ("onkeypress", checkForEnter); 

这两行不工作! (FOCUS_LOST和checkForEnter方法开始警报(“你好”);所以我知道他们没有被触发)

object_input.onchange = function() {focus_lost()}; 

//Populate with options.... 
+1

'attachEvent'特定于IE。尝试使用'addEventListener'。 – BenM 2013-02-20 11:18:38

+0

奇怪的是,我在我的输入框中使用attachEvent,它在所有浏览器上都能正常工作。 – 2013-02-20 11:25:50

+0

对不起,那根本不可能。例如> http://jsfiddle.net/sFx7u/1/在Chrome中不会触发,除非您在我的答案中使用示例。它触发'Uncaught TypeError:Object#没有方法'attachEvent'。 'attachEvent'是仅限IE的! – BenM 2013-02-20 11:28:06

回答

1

attachEvent仅仅是一个IE浏览器的功能。你也应该使用addEventListener绑定你的事件,例如:

if(object_input.addEventListener) 
{ 
    object_input.addEventListener('blur', focus_lost); 
    object_input.addEventListener('keypress', checkForEnter); 
} 
else 
{ 
    object_input.attachEvent('onblur', focus_lost); 
    object_input.attachEvent('onkeypress', checkForEnter); 
} 

您可以看到的jsfiddle demo here

您应该注意,addEventListener不要求事件与on相加,而attachEvent会做。

+0

非常感谢Ben!工作很好。 (显然我不能接受你的答案4分钟,所以在那里裸露)。但再次感谢您的快速回复。非常感激。 – 2013-02-20 11:28:39

+0

没问题,很高兴帮助:) – BenM 2013-02-20 11:29:20