Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/391.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
Javascript typeahead.js-显示所有预取的基准_Javascript_Javascript Events_Typeahead_Typeahead.js - Fatal编程技术网

Javascript typeahead.js-显示所有预取的基准

Javascript typeahead.js-显示所有预取的基准,javascript,javascript-events,typeahead,typeahead.js,Javascript,Javascript Events,Typeahead,Typeahead.js,我正在使用(不是Bootstrap 2.x one!)一个本地基准数据集,在任何给定点都没有其他基准被请求。我试图在关注输入字段时呈现所有建议,然后根据用户类型对其进行过滤 这满足了同样的需求,但只有当我有一些令牌要搜索时,公认的解决方案才有用——在我的例子中,我想显示所有的东西,而不仅仅是有Uni*令牌的基准 是否有可能通过一种未记录/模糊的方法来实现这一点,或者我必须破解它的源代码?我想实现一个类似的目标,因此我查看了typeahead代码并一起破解了一些东西,见下表: 它在处理占位符和关闭

我正在使用(不是Bootstrap 2.x one!)一个
本地
基准数据集,在任何给定点都没有其他基准被请求。我试图在关注输入字段时呈现所有建议,然后根据用户类型对其进行过滤

这满足了同样的需求,但只有当我有一些令牌要搜索时,公认的解决方案才有用——在我的例子中,我想显示所有的东西,而不仅仅是有
Uni*
令牌的基准


是否有可能通过一种未记录/模糊的方法来实现这一点,或者我必须破解它的源代码?

我想实现一个类似的目标,因此我查看了typeahead代码并一起破解了一些东西,见下表:

它在处理占位符和关闭下拉列表时仍然有点问题,但这给了我一个切换按钮,我可以单击它,它是我的输入元素的同级,它从数据集中获取完整列表,而不是一个小的建议列表

示例html(我正在使用自定义的typeahead数据绑定进行敲除,但您知道了):


谢谢,这个黑客似乎奏效了。我的问题是,当你第一次单击时,它会打开“下拉列表”,但当你再次单击时,它会选择下拉列表中的第一项。无论如何,除非用户单击列表中的某个项目,否则不能让它选择任何内容?此外,当您模糊下拉列表并仅单击页面上的任意位置时,切换的数据设置不正确(因此,当您单击任意位置且菜单关闭时,您需要单击两次才能再次打开它)。知道如何修复吗?@Guy我还没有花更多的时间研究这个问题,正如我提到的
它在处理占位符和关闭下拉列表时仍然有点问题,如果有机会,我会考虑改进它。发布这篇文章的想法是给出一个很好的例子,说明在typeahead中可以找到数据,并预取完整的基准列表,因为这需要更长的时间来追踪。。这并不是一个完全完美的下拉列表。无论是谁否决了这一点,请说明原因,因为它回答了最初的海报问题,但如果他们将其标记为答案,则由他们决定。。这里也没有其他答案,我非常肯定我花了几个小时钻研typeahead代码,当这里显示的信息有帮助时,我不应该无缘无故地投反对票,特别是如果它只是由于与问题无关的错误数据切换实现。谢谢。实际上,我删除了与数据切换属性相关的所有代码,从而对其进行了一些改进。它现在运行得很好。我在用户点击文本输入时触发了它,我的实现中没有一个V形图标
        <div class="col-md-12 input-group tt-dropdown-group">
            <input id="category" name="category" type="text" class="form-control" data-bind="
                attr: { placeholder: categoryCaption },
                typeahead: categories,
                typeaheadValueKey: 'Name',
                typeaheadValue: category,
                typeaheadDestroy: true" />
            <span id="category-drop" class="input-group-addon tt-dropdown-icon">
                <span class="glyphicon glyphicon-chevron-down"></span>
            </span>
        </div>
    $(".tt-dropdown-group .tt-dropdown-icon").on("click", function() {
        var $input = $(this).parent(".tt-dropdown-group").find("input.tt-query");
        var $toggleBtn = $(this);

        // these are all expected to be objects so falsey check is fine
        if (!$input.data() || !$input.data().ttView || !$input.data().ttView.datasets || !$input.data().ttView.dropdownView || !$input.data().ttView.inputView) {
            return;
        }

        var ttView = $input.data().ttView;

        var toggleAttribute = $toggleBtn.attr("data-toggled");

        if (!toggleAttribute || toggleAttribute === "off") {
            $toggleBtn.attr("data-toggled", "on");

            $input.typeahead("setQuery", "");

            if ($.isArray(ttView.datasets) && ttView.datasets.length > 0) {
                // only pulling the first dataset for this hack
                var fullSuggestionList = []; // renderSuggestions expects an suggestions array not an object
                $.each(ttView.datasets[0].itemHash, function(i, item) {
                    fullSuggestionList.push(item);
                });

                ttView.dropdownView.renderSuggestions(ttView.datasets[0], fullSuggestionList);
                ttView.inputView.setHintValue("");
                ttView.dropdownView.open();
            }
        }
        else if (toggleAttribute === "on") {
            $toggleBtn.attr("data-toggled", "off");
            ttView.dropdownView.close();
        }