2012-11-07 32 views
0

我需要一些關於jQuery焦點函數的幫助。 我有一個輸入字段,當按下Enter鍵和輸入字段有焦點時,我想要做些什麼。jQuery焦點函數返回false

HTML:

<form class="myform"> 
<ul> 
<input class="inputfield" type="text"> 
</ul> 
</form> 

和jQuery:

$(document).keyup(function(event) { 
    if (event.keyCode == 13 && $(':input').is(':focus')) { 
     //do stuff here 
    } 
}); 

的。是( ':關注')總是返回假。

有沒有人知道最新的問題在這裏?

謝謝!

+1

看起來像它的工作原理http://jsfiddle.net/VVQ8x/ – 2619

+0

不確定你確切的需求是什麼,但使用表單的'submit'事件更簡單,而不是採用這種循環的方法。 – Abhilash

回答

1

爲什麼不直接將鍵入事件分配給輸入字段?

$('.inputfield').keyup(function(event) { 
    if (event.keyCode == 13) { 
     // Enter key pressed ... do stuff here 
    } 
}); 
0

你會的處理程序綁定到文本框本身更好

$('.inputfield').on('keydown', function (event) { 
    if (event.keyCode == 13) { 
     //do stuff here 
    } 
}); 

如果您有jQuery用戶界面,您可以使用

$.ui.keycode.ENTER 

如果你願意

0

.is(':focus')應該爲jquery 1.6+工作。

或者你可以嘗試在一個jQuery對象包裝的「老」的JavaScript activeElement財產和嵌入它onlaod JS回調函數,因爲它:

window.onload = function(){ 
    $(document).keyup(function(event) { 
     if (event.keyCode == 13 && $(document.activeElement).is('.inputfield')) { 
      //do stuff here 
     } 
    }); 
}; 
+0

我喜歡這個解決方案和它爲我工作。但有一個奇怪的事情:當我加載頁面時,我必須等待10秒才能觸發鍵盤事件... – Nico

+0

不確定原因,但我將action =「」更改爲action =「javascript:void(0);」現在它的工作正常 – Nico

+0

我試過了你的函數在加載回調中嵌入。我更新了我的答案,敬請期待... –