0

我已经嵌套了 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
4

2 回答 2

1

html:

<ul>
    <li>Test 1<br /><input type="text" /></li>
    <li>Test 2</li>
<ul>

脚本:

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

jsFiddle(请注意,您首先必须在 html 框上单击一次):

http://jsfiddle.net/6hEwD/

于 2013-06-05T22:20:07.847 回答
0

使用此代码:

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

小提琴:http: //jsfiddle.net/6hEwD/4/

一旦文档处于焦点并且您将鼠标悬停在 div 上,您就可以在输入中键入内容。

于 2013-06-05T23:28:45.170 回答