代码之家  ›  专栏  ›  技术社区  ›  dnagirl

自动完成:如何避免重复搜索?

  •  1
  • dnagirl  · 技术社区  · 16 年前

    我使用JQuery插件 autocomplete 作为一种数据集选择器。如果用户从自动完成查找中选择一个值,则会在数据库中查询匹配的数据集。如果用户键入新值,则用户可以输入新的数据集。当用户键入现有值而不是从自动完成查找中选择它时,会出现问题。完成后,自动完成 .result() 方法,并且没有检索到数据集。为了解决这个问题,我添加了一个 .blur(function(){$(this).search();}); 输入元素。这解决了原来的问题。

    .result() 从查找和模糊中选择时激发。我想要 .result() 从查找中选择或模糊时触发。我该怎么做?

    这是我的密码:

    $('#groupset').autocomplete('ajax/php/leeruns.php');
    $('#groupset').result(
        function(event, data, formatted) {
            if(data){
                $('#groupsetdesc').val(formatted);
                groups.load(data[1]); //retrieve matching dataset
            } else {
                $('#groupsetdesc').val('');
            }
        }
    ).blur(function(){$(this).search();});
    
    1 回复  |  直到 16 年前
        1
  •  1
  •   Snives    15 年前

    可以将数据的当前值存储在名为previous的持久变量中,如果相同,则不加载数据集。

    var loaded_previous;
    $('#groupset').autocomplete('ajax/php/leeruns.php');
    $('#groupset').result(
    function(event, data, formatted) {
        if(data && data[1] != loaded_previous){
            loaded_previous = data[1];
            $('#groupsetdesc').val(formatted);
            groups.load(data[1]); //retrieve matching dataset
        } else {
            $('#groupsetdesc').val('');
        }
    }
    ).blur(function(){$(this).search();});
    
    推荐文章