Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 在“自动完成”组合框中选择下一项时出现问题_Jquery - Fatal编程技术网

Jquery 在“自动完成”组合框中选择下一项时出现问题

Jquery 在“自动完成”组合框中选择下一项时出现问题,jquery,Jquery,我在使用此组合框时遇到一些困难: 我已经在我的网站上实现了它,效果很好,但是当人们选择了一些东西并且想要转到组合框中的下一个项目时,我会收到很多抱怨。 通常,您会单击组合框并按下向下键,但这不适用于此特定代码 我要找的是修改这段代码 我尝试过几种方法,比如在下拉列表显示时,尝试将其ui状态焦点设置为所选项目,但我无法使其正常工作。 我还尝试在下拉菜单中添加一个滚动条,然后在项目上设置选择突出显示 我现在做了一个“Hack”,我只需显示原始项并编辑代码,这样框的下三角形就可以在输入字段旁边看到。

我在使用此组合框时遇到一些困难:

我已经在我的网站上实现了它,效果很好,但是当人们选择了一些东西并且想要转到组合框中的下一个项目时,我会收到很多抱怨。 通常,您会单击组合框并按下向下键,但这不适用于此特定代码

我要找的是修改这段代码

我尝试过几种方法,比如在下拉列表显示时,尝试将其ui状态焦点设置为所选项目,但我无法使其正常工作。 我还尝试在下拉菜单中添加一个滚动条,然后在项目上设置选择突出显示

我现在做了一个“Hack”,我只需显示原始项并编辑代码,这样框的下三角形就可以在输入字段旁边看到。因此,当用户点击它时,他将获得原始的下拉菜单,而无法对其进行过滤,但他可以简单地使用向下键或向上键选择下一个或上一个。 不幸的是,这太脏了,我想把它清理一下

$.widget("custom.combobox", {
                    _create: function () {
                        this.wrapper = $("<span>")
                          .addClass("custom-combobox")
                          .insertBefore(this.element);
                        this.element.width(5).addClass("showAllButton");
                        this._createAutocomplete();
                        this._createShowAllButton();
                    },
$.widget(“custom.combobox”{
_创建:函数(){
this.wrapper=$(“”)
.addClass(“自定义组合框”)
.insertBefore(此.element);
this.element.width(5).addClass(“showAllButton”);
这是。_createAutocomplete();
这是。_createShowAllButton();
},
我正在尝试的是可能的还是我需要使用不同的组件?如果可能,我应该如何着手修复它


我想补充一点,filter/auto complete选项是必需的。

您可以尝试用流动代码替换
\u source
方法。当列表在筛选开始前不可见时,它将打开完整的选项列表,而这正是用户重新输入组合并按下键时所需的。我还没有在所有情况下测试此解决方案d例如,我知道这不会选择以前选择的值,但这是一个开始:)

如果您需要进一步增强此功能,您应该查看并了解如何扩展它以满足您的需要

this._source = function( request, response ) {
    var input = this.input;
    var wasOpened = input.autocomplete( "widget" ).is( ":visible" );
    var matcher = new RegExp( $.ui.autocomplete.escapeRegex(request.term), "i" );
    response( this.element.children( "option" ).map(function() {
        var text = $( this ).text();
        if ( this.value && ( !wasOpened || !request.term || matcher.test(text) ) )
            return {
                label: text,
                value: text,
                option: this
            };
    }) );
}