javascript - 处理 jquery 自动完成中的无结果

标签 javascript jquery jquery-ui autocomplete

嘿,当用户当前查询没有结果时,我正在尝试返回一条消息!我知道我需要进入 keyup 事件,但看起来插件正在使用它

最佳答案

这个问题真的已经过时了,无论如何我正在使用新的 jQuery UI 1.8.16,自动完成现在非常不同:http://jqueryui.com/demos/autocomplete/#default

无论如何,如果您尝试按照问题的要求做同样的事情,就没有更多的解析函数,据我所知,搜索结果没有调用任何函数。

我设法解决这个问题的方法是覆盖自动完成的过滤器功能——注意:这会影响你所有的自动完成

$.ui.autocomplete.filter = function(array, term) {
            var matcher = new RegExp( $.ui.autocomplete.escapeRegex(term), "i" );

            var aryMatches = $.grep( array, function(value) {
                return matcher.test(value.label || value.value || value);
            });

            if (aryMatches.length == 0){
                aryMatches.push({
                    label: '<span class="info" style="font-style: italic;">no match found</span>',
                    value: null
                });                     
            }

            return aryMatches;
        };

该函数在源代码中略有修改,grep 调用是相同的,但如果没有结果,我会添加一个值为 null 的对象,然后我会重写 select 调用以检查 null 值。

这会给您带来一种效果,如果您继续输入但未找到匹配项,您会在下拉列表中看到“未找到匹配项”项,这非常酷。

要覆盖选择调用,请参阅 jQuery UI Autocomplete disable Select & Close events

$(this).data('autocomplete').menu.options.selected = function(oEvent, ui){

            if ($(ui.item).data('item.autocomplete').value != null){
                //your code here - remember to call close on your autocomplete after


            }
        };

因为我在页面上的所有自动完成中都使用了它,请确保首先检查值是否为空!在您尝试引用不存在的键之前。

关于javascript - 处理 jquery 自动完成中的无结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/849415/

相关文章:

javascript - React-tooltip渲染两次

javascript - 如何在 AngularJS 中访问预定义数组

javascript - 如何修复传单 map 中无效的 LatLng 对象 : (NaN, NaN)?

javascript - 是否有现成的库来实现无尽的移动元素效果?

jquery-ui - jQuery UI 可调整大小的最小示例

jquery-ui - Jquery droppable获取多个draggable id

javascript - 如何将日期字符串转换为 "dd/mm/yyyy"?

javascript - 使用 javascript 设置新的 onclick 属性不起作用

javascript - 自定义 CSS 导航下拉菜单

javascript - 使用居中的用户指定文本动态创建 div