Javascript 如果用户键入anythign,如何使用jquery.focus()元素

Javascript 如果用户键入anythign,如何使用jquery.focus()元素,javascript,jquery,Javascript,Jquery,我已通过将鼠标悬停在父li上激活 除了我在弹出菜单中有一个搜索表单外,所有的工作都正常。如果用户键入任何内容,我希望这个输入字段是集中的 我似乎不能正确理解这一部分,有什么想法吗?我现在的实现方式,只有在我已经选择了输入并按了一些键时才有效,这是因为$this是输入 //Flyout menu in big_header $(".flyout_big").removeClass("fallback"); $("#head_big .categories > ul >

我已通过将鼠标悬停在父li上激活

除了我在弹出菜单中有一个搜索表单外,所有的工作都正常。如果用户键入任何内容,我希望这个输入字段是集中的

我似乎不能正确理解这一部分,有什么想法吗?我现在的实现方式,只有在我已经选择了输入并按了一些键时才有效,这是因为$this是输入

   //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();
});