2011-01-30 83 views
4

我正在尋找一種方法,能夠在未選擇任何內容的情況下開始在網站上輸入內容,然後在焦點上輸入特定字段。設置輸入字段專注於開始輸入

谷歌也使用此功能。在他們的搜索結果中,您可以點擊任意位置(離焦搜索字段),當您開始輸入時,會自動再次搜索字段。

我在想關於jQuery的一般onkeyup函數來關注字段,有什麼建議嗎?

非常感謝。

回答

6

您應該綁定​​事件,但立即解除綁定,以便可以在其他文本輸入中繼續鍵入而不將焦點恢復爲默認輸入。

$(document).bind('keydown',function(e){ 
    $('#defaultInput').focus(); 
    $(document).unbind('keydown'); 
}); 

See example here.

+2

一個很好的快捷方式是$(document).one('keydown',...)`。 – 2011-01-30 02:35:47

0

如果計劃這樣做,我會說使用onKeyUp而不是onKeyDown。它的行動早得多,這將有助於緩解交流的流程。

+0

從我目前對jQuery的理解中,你將不得不將onKeyUp事件綁定到一個對象。你知道是否有可能有「一般onKeyUp事件」? – baik 2011-01-30 00:46:03

+1

將它綁定到`document`對象 – 2011-01-30 01:07:31

0

答案是如此簡單:

$(document).keydown(function() { $('#element').focus(); });

的keydown優先畢竟因爲第一個鍵被按下後KEYUP只會被解僱 - 分別不捕獲我的搜索字段中鍵入的第一個鍵。

1

該解決方案沒有@ mVChr的解決方案存在的問題:即您可以用鼠標單擊另一個輸入並開始輸入而不會因爲​​綁定而失去焦點。

此外,此解決方案不會刪除所有元素的​​-bindings,而是使用指定的處理程序。

var default_input_handler = function() { 
    $('.default-input').focus(); 
    $(document).off('keydown', default_input_handler); 
} 

$(document).on('keydown', default_input_handler); 

$('input, textarea, select').on('focus', function() { 
    $(document).off('keydown', default_input_handler); 
});