2013-02-20 188 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