【发布时间】:2012-08-17 18:43:37
【问题描述】:
我正在寻找一种无需选择任何内容即可开始在网站上输入内容的方法,然后让特定的输入字段成为焦点。
Google 也采用了此功能。在他们的搜索结果中,您可以单击任意位置(使搜索字段失焦),当您开始输入时,它会自动再次聚焦在搜索字段上。
我正在考虑jQuery通用onkeyup函数专注于该领域,有什么建议吗?
非常感谢。
【问题讨论】:
标签: php javascript jquery search-engine setfocus
我正在寻找一种无需选择任何内容即可开始在网站上输入内容的方法,然后让特定的输入字段成为焦点。
Google 也采用了此功能。在他们的搜索结果中,您可以单击任意位置(使搜索字段失焦),当您开始输入时,它会自动再次聚焦在搜索字段上。
我正在考虑jQuery通用onkeyup函数专注于该领域,有什么建议吗?
非常感谢。
【问题讨论】:
标签: php javascript jquery search-engine setfocus
您应该绑定keydown 事件,但立即解除绑定,以便在其他文本输入中继续输入,而不会将焦点恢复到默认输入。
$(document).bind('keydown',function(e){
$('#defaultInput').focus();
$(document).unbind('keydown');
});
【讨论】:
$(document).one('keydown',...)。
答案就这么简单:
$(document).keydown(function() { $('#element').focus(); });
keydown 是首选,因为 keyup 只会在按下第一个键后触发 - 并且分别不会捕获在我的搜索字段中键入的第一个键。
【讨论】:
此解决方案没有@mVChr 解决方案的问题:即您可以用鼠标单击另一个输入并开始输入而不会由于keydown-binding 而失去焦点。
此外,此解决方案不会删除所有元素的 keydown-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);
});
【讨论】:
如果打算这样做,我会说使用 onKeyUp 而不是 onKeyDown。它在动作中更早,这将有助于简化交互流程。
【讨论】:
document对象