jquery ui autocomplete:计算结果

时间:2011-04-04 12:21:17

标签: jquery-ui jquery-autocomplete

我想知道是否可以计算在文本框中输入内容时显示的结果数量。计算li元素的工作,但我敢打赌,这是一种更聪明的方式。感谢

5 个答案:

答案 0 :(得分:7)

我认为这不可能直接使用JQueryUI Events。我一直在寻找一种没有成功的方法。

所有相关事件仅返回单击的元素(显示列表后)或有关事件的信息(不是列表)。

您可以在此处查看:http://jqueryui.com/demos/autocomplete/#event-focus

你说的是最紧密的解决方案:

$( "#tags" ).autocomplete({
  source: availableTags,
  open: function(event,ui){
    var len = $('.ui-autocomplete > li').length;
    $('#count').html('Founded '+len+' results');
  }
});

答案 1 :(得分:0)

当我输入的内容没有返回任何结果时,上面的解决方案对我不起作用。它会持续显示上一个匹配字符串的结果数量。这是一个有效的解决方案。

source: function (request, response) {
    $.getJSON(
        "/Ajax/GetSomeJson.ashx",
        { q: request.term },
        function (data) {
            console.log(data.length);
             $('#count').html('Found '+ data.length +' results');

            response($.map(data, function (item) {
                return item;
            }));
        }
    );
}

答案 2 :(得分:0)

根据Fran的回答,我找到了一种计算匹配数的方法,但我认为这不是100%可靠。不过,它对我有用。

$('#autocompleteinput').autocomplete({
    source: datasource,
    search: function()
    {
        $(this).data('count',0);
    },
    open: function()
    {
        $(this).data('count',$('.ui-autocomplete > li').length);
    },
    delay: 0
}).keyup(function(){
    $('#count').html('Found '+$(this).data('count')+' items');
});

延迟必须为0,或者通常会在搜索之前触发密钥,并且不会很好。

答案 3 :(得分:0)

这对我有用。我的要求是,如果只有一个匹配结果,则自动选择on on blur事件。以前我试过var len= $('.ui-autocomplete > li').length;,但我没有在所有情况下都工作。有时它会将之前的结果与计算/长度相加。

以下代码对我有用:

.on('autocompletechange', function() {
        if ($(this).data('ui-autocomplete').selectedItem === null && ($(this).autocomplete("widget").find( "li" ).length == 1) ) {
            //this will trigger your select automatically so it will handle other custom override you did for select
            $(this).data('ui-autocomplete').menu.element.children('li:first').children('a').trigger('click');
        }
    })

答案 4 :(得分:0)

Fran的回答很好,但是它将从该页面上所有'.ui-autocomplete'中计数为'li'。 此解决方案仅从当前自动完成操作中计算“ li”个元素:http://www.jbmurphy.com/2012/04/27/how-to-get-the-count-of-items-returned-in-jquery-autocomplete/

open: function(event,ui){
    var len = $(this).autocomplete("widget").find( "li" ).length;
    },