2014-09-22 35 views
0
element.on("click", function(){ 
    element[0].querySelector("input").focus() 
    element[0].querySelector("input").on('keypress',function(key){ 
     console.log(key) 
    } 
    }) 

這將返回該錯誤:嵌套'開'點擊和按鍵功能不起作用?

Uncaught TypeError: undefined is not a function 
runner:18(anonymous function) 
runner:18(anonymous function) 
angular.js:2843forEach 
angular.js:325eventHandler 

而且JSBin

謝謝!

+0

它將註冊以下按鍵的事件,否? – 2014-09-22 20:47:05

+2

通常如果出現錯誤,我們能夠看到它會很棒;) – 2014-09-22 20:47:25

+0

您的發佈示例中存在語法錯誤。你有沒有檢查控制檯日誌,以確保你已經修復了任何語法錯誤? – jwatts1980 2014-09-22 20:50:42

回答

3

querySelector返回一個DOM對象。 .on函數是一個jQuery函數。你需要包裝它:

$(element[0].querySelector("input")).on('keypress',function(key){ 
    console.log(key) 
} 

此外,我會厭倦在其他事件處理程序中添加事件處理程序。每當你點擊這個元素時,keypress事件就會被添加。如果您單擊該元素5次,則輸入現在將有5個活動按鍵事件,除非您在某個時刻刪除它。如果你意識到這些影響,你應該只做這件事 - 即使如此,它也可能使代碼難以遵循。

+0

「另外,我會厭倦在其他事件處理程序中添加事件處理程序。」爲什麼? – 2014-09-22 21:00:48

+0

+1好,先生,做得好 – 2014-09-22 21:03:45

+0

@Ninsly我會將該信息添加到答案。 – jwatts1980 2014-09-22 21:04:29