重新定位 Jquery UI 自动完成结果框

Posted

技术标签:

【中文标题】重新定位 Jquery UI 自动完成结果框【英文标题】:Re-positioning Jquery UI Autocomplete Results Box 【发布时间】:2011-09-10 09:04:07 【问题描述】:

我正在使用 Jquery UI 自动完成插件作为一个直接的搜索词建议工具。除了我无法移动结果框外,它可以正常运行。我基本上需要将它向左移动 20 像素,向下移动 4 像素。我试图覆盖 Jquery UI CSS,但无法重新定位框。

非常感谢有此问题经验的人提供任何帮助。

【问题讨论】:

【参考方案1】:

这是您可以做到的一种方法,点击open 事件并在该事件发生时更改菜单的位置:

$("#autocomplete").autocomplete(
    appendTo: "#results",
    open: function() 
        var position = $("#results").position(),
            left = position.left, top = position.top;

        $("#results > ul").css(left: left + 20 + "px",
                                top: top + 4 + "px" );

    
);

我还使用appendTo 选项来轻松找到包含菜单的ul。不过,您可以在没有此选项的情况下执行此操作。

这是一个工作示例:http://jsfiddle.net/9QmPr/

【讨论】:

当我将此代码合并到我正在处理的项目中时,我收到 this.menu is undefined 错误。 @JP1971:除非您发布一些代码,否则我无法帮助您。您可能想提出另一个问题以获得更好的结果。 如果我想调整<ul> 的大小,使其宽度与<input> 的宽度相同,该怎么办? 你试过了吗:$("#results > ul").width($("#results").width()); @AndrewWhitaker,我尝试了您的解决方案,它适用于 FF、Chrome 和 IE8-9,但不适用于 IE7,我是这样做的,appendTo: "#results", open: function() var position = $("#results").position(), left = position.left, top = position.top; $("#results > ul").css(left: (left + 15) + "px", top: (top + 30) + "px", width: (206) + "px", float: "left"); 我做错了什么吗?我的意思是,在 IE7 上,与其他浏览器不同,我的自动完成结果并不位于我的 #results div 下方。【参考方案2】:

这可以通过position option,特别是offset property轻松实现:

$('#myField').autocomplete(
    source: …,
    position: 
        offset: '20 4' // Shift 20px to the left, 4px down.
    
);

【讨论】:

英雄!我在打开仓位后发现了这个。 请务必在此处查看位置选项的所有可用设置api.jqueryui.com/position【参考方案3】:

类似的方法也可以

open : function()
        $(".ui-autocomplete:visible").css(top:"+=5",left:"-=2");
    ,

【讨论】:

完美。这对我使用 1.12.1 有效,而 position 属性不起作用。 为我工作。谢谢。【参考方案4】:

使用这个选项似乎更好

appendTo: "#autocomplete_target_wrapper",
menudocking: 
    menucorner: "right top",
    inputcorner: "right bottom",
    collision: "none"

官方链接 https://forum.jquery.com/topic/autocomplete-menu-docking-position

【讨论】:

以上是关于重新定位 Jquery UI 自动完成结果框的主要内容,如果未能解决你的问题,请参考以下文章

JQuery UI 自动完成不结果显示在结果框中

Jquery ui自动完成填充带有ID​​的隐藏字段

jquery ui自动完成定位错误

如何使用 KnockoutJS 和 JQuery UI 创建自动完成组合框

自动选择单一匹配jQuery UI自动完成组合框

jQuery UI 自动完成组合框选项需要在 iPhone 上双击