代码之家  ›  专栏  ›  技术社区  ›  Anthony Potts

jquery多输入自动完成

  •  3
  • Anthony Potts  · 技术社区  · 15 年前

    我有一个自动完成字段,我想通过提供类别下拉列表来增加它,希望这样可以更容易地进行搜索。这将从下拉列表中获取类别ID,然后将其与搜索文本一起传递给我的服务器端自动完成功能。

    我正在使用此处找到的jquery autocomplete插件:

    http://bassistance.de/jquery-plugins/jquery-plugin-autocomplete/

    演示页面如下:

    http://jquery.bassistance.de/autocomplete/demo/

    也许这已经在演示中有所解释,但我只是没有看到它。我能够从JSON中获取数据并将其拆分为多个字段。

    这并不重要,但我也在使用ASP.NET MVC。

    3 回复  |  直到 15 年前
        1
  •  3
  •   bendewey    15 年前

    自动完成插件的第一个参数可以是数组或URL。您只需将类别ID作为查询字符串参数提供给autocomplete函数即可。

    var selectedCategory = $('.categories').val();
    var query = '';
    if (selectedCategory !== 0)
    {
       query = '?category=' + selectedCategory;
    }
    $("#suggest4").autocomplete('search_service.svc' + query, {
       // options   
    });
    

    希望这有帮助。

        2
  •  0
  •   Eric Harrison    15 年前

    前面的答案是1/2正确。问题是,当调用.autocomplete()时,会立即计算url+查询,这意味着当调用autocomplete时,将始终使用当前选定的类别值。这意味着,如果用户选择了不同的类别,则不会在查询命令行上传递新值。

    请参阅我的补丁的这个博客条目,它允许您传递一个函数而不是一个URL,并且仍然使用类似于Bendewey上面的例子的代码。

    jquery-autocomplete-other-fields

    注意:我试着把补丁贴在这里,但都弄乱了。

    埃里克

        3
  •  0
  •   number0    14 年前

    更好的解决方案是向参数中添加ExtraParams回调函数

    extraParams: {
      data: function(){ return new Date().getTime() }
    },