【问题标题】:Up / Down Arrow jQuery Events on Search box搜索框上的向上/向下箭头 jQuery 事件
【发布时间】:2011-10-14 23:59:00
【问题描述】:

我正在尝试实现中提到的类似功能 jQuery Key Events with a Search Box

我想在搜索结果中上下箭头,并在输入键或鼠标点击时选择结果。

在以下位置找到我的代码:http://jsfiddle.net/CyQ2w/

3 个问题:

我可以上下箭头,但是当我在最后一个项目之后向下箭头时,项目上的选择消失了。我试图在最后一项之后禁用浏览,即保持最后一项被选中。当我们向上箭头时,第一个项目也会发生同样的事情。

当我将鼠标悬停在项目列表上并移出鼠标时,选择悬停被移除,现在向上和向下箭头不起作用。

此外,在输入键上似乎没有设置带有所选项目的文本区域。我正在尝试捕获所选 li 的“id”。

我们将不胜感激。

【问题讨论】:

    标签: jquery autocomplete


    【解决方案1】:

    对于您的第一个问题,您可以添加如下检查 -

    ...
    else if (code === 40) { //Down arrow
            if($("li.hovered").index()==$("li").length-1) return;
    ...
    else if (code === 38) { //Up arrow
            if($("li.hovered").index()==0) return;
            ...
    

    这意味着当您在第一项 index 0 中时,按向上箭头将无济于事。

    顺便说一句,38 不是向下箭头,而是向上箭头。不要让其他人感到困惑。 我希望你能自己做下来检查。

    你可以像下面这样解决第二个问题 -

    $("#userlist_container li").hover(function () {
        $('li.hovered').removeClass('hovered');
        $(this).addClass("hovered");
    }, function () {
        // $(this).removeClass("hovered");
    });
    

    如果没有完整的代码,你的第三个问题很难解释,所以请查看我的更新代码http://jsfiddle.net/CyQ2w/7/

    您应该使用e.preventDefault(); 阻止事件

    【讨论】:

    • +1 完美!向上箭头问题似乎已解决。对不起,错误的评论。已在 jfiddle 中更新。 :)
    • 我能够解决向下箭头问题。感谢您的索引逻辑。
    • 它有效。我需要选定 li 的 id,所以我使用了 ("li.hovered").attr("id")。谢谢你的帮助。 :)
    • 当我在列表中执行向上/向下箭头时,textarea 中的光标也会向上/向下移动。如何在 textarea 中防止这种情况? .blur() 将移除焦点,同时我将无法在列表中使用箭头键。
    • e.preventDefault()放在上,下也
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-12
    • 2010-09-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多