Javascript 如果用户键入anythign,如何使用jquery.focus()元素
我已通过将鼠标悬停在父li上激活 除了我在弹出菜单中有一个搜索表单外,所有的工作都正常。如果用户键入任何内容,我希望这个输入字段是集中的 我似乎不能正确理解这一部分,有什么想法吗?我现在的实现方式,只有在我已经选择了输入并按了一些键时才有效,这是因为$this是输入Javascript 如果用户键入anythign,如何使用jquery.focus()元素,javascript,jquery,Javascript,Jquery,我已通过将鼠标悬停在父li上激活 除了我在弹出菜单中有一个搜索表单外,所有的工作都正常。如果用户键入任何内容,我希望这个输入字段是集中的 我似乎不能正确理解这一部分,有什么想法吗?我现在的实现方式,只有在我已经选择了输入并按了一些键时才有效,这是因为$this是输入 //Flyout menu in big_header $(".flyout_big").removeClass("fallback"); $("#head_big .categories > ul >
//Flyout menu in big_header
$(".flyout_big").removeClass("fallback");
$("#head_big .categories > ul > li").hover(
function() {
//$('ul', this).stop().slideDown(100);
$(".flyout_big", this).stop().fadeIn("fast");
var offset = $(this).offset();
$(".flyout_big .flyout_arrow", this).stop().animate({top:offset.top},"slow");
//Activate-focus search field on any key-press
$(document).on("keydown",function(e){
//if (e.keyCode == 13) {
// alert("enter");
//} else if (e.keyCode == 27) {
// alert("esc");
//}
//alert("test");
$(".search_field").focus();
});
},
function() {
//$('ul', this).stop().slideUp(100);
$(".flyout_big", this).stop().fadeOut("fast");
});
//End floyout menu in big_header
Html:
JSFIDLE(请注意,首先必须在html框上单击一次):
使用了以下代码:
$('li *').hide();
$("ul > li").hover(function(){
var $this = $(this);
$this.find('*').show();
$(document).on("keydown",function(){
$this.children('input').focus();
});
},
function(){
var $this = $(this);
$this.find('*').hide();
});
小提琴:
一旦文档处于焦点并且您将div悬停,您就可以在输入中键入内容。让
焦点
指向表单应该可见的搜索字段。。否则,你需要先打开它,在动画回调焦点中,你可能会考虑为此添加一个jsFoDLE。如果看不到HTML标记的完整上下文,很难理解问题可能是什么。在mouseenter事件中将keydown事件处理程序附加到文档似乎是一个好主意,它肯定不会绑定多次?你说这是一个弹出菜单。通常的方法是在弹出时将焦点放在(第一个)输入字段上。有什么理由不应该这样做吗?@adeneo只有在弹出菜单实际退出时,我如何绑定键?
$(document).ready(function()
{
$("ul > li").hover(function()
{
$("ul > li").removeClass('active');
$(this).addClass('active');
});
$('html').on("keyup",function()
{
alert('test');
$("ul > li").filter(".active").children('input').val('test').focus();
});
});
$('li *').hide();
$("ul > li").hover(function(){
var $this = $(this);
$this.find('*').show();
$(document).on("keydown",function(){
$this.children('input').focus();
});
},
function(){
var $this = $(this);
$this.find('*').hide();
});