2011-01-30 53 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); 
});