我正在寻找一种能够在没有选择任何内容的情况下开始在网站上打字的方法,然后让特定的输入字段成为焦点。
谷歌也使用了这个功能。在他们的搜索结果中,您可以单击任意位置(使搜索字段失焦),当您开始键入时,它会自动再次关注搜索字段。
我在考虑 jQuery 通用 onkeyup 函数来专注于该领域,有什么建议吗?
非常感激。
我正在寻找一种能够在没有选择任何内容的情况下开始在网站上打字的方法,然后让特定的输入字段成为焦点。
谷歌也使用了这个功能。在他们的搜索结果中,您可以单击任意位置(使搜索字段失焦),当您开始键入时,它会自动再次关注搜索字段。
我在考虑 jQuery 通用 onkeyup 函数来专注于该领域,有什么建议吗?
非常感激。
您应该绑定keydown
事件,但立即解除绑定,以便在其他文本输入中继续输入,而不会将焦点恢复到默认输入。
$(document).bind('keydown',function(e){
$('#defaultInput').focus();
$(document).unbind('keydown');
});
答案很简单:
$(document).keydown(function() { $('#element').focus(); });
毕竟 keydown 是首选,因为 keyup 只会在按下第一个键后触发 - 并且分别不会捕获在我的搜索字段中键入的第一个键。
这个解决方案没有@mVChr 的解决方案所存在的问题:即您可以用鼠标单击另一个输入并开始输入而不会因为-binding 而失去焦点keydown
。
此外,此解决方案不会删除所有元素的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。它在行动中更早,这将有助于简化交互流程。