【问题标题】:DropDownlist search/AutocompletionDropDownlist 搜索/自动完成
【发布时间】:2014-06-15 12:14:56
【问题描述】:

有没有办法从下拉列表的搜索框中的文本中返回至少包含一个单词的项目。

有很多 ajax 教程,但它们都返回包含整个搜索文本的项目。

直到现在我还在使用JQUERY Autocompete

我需要更改正则表达式才能实现我想要的:

// Initialize ajax autocomplete:
$('#autocomplete-ajax').autocomplete({
    // serviceUrl: '/autosuggest/service/url',
    lookup: countriesArray,
    lookupFilter: function(suggestion, originalQuery, queryLowerCase) {
        var re = new RegExp('\\b' + $.Autocomplete.utils.escapeRegExChars(queryLowerCase), 'gi');
        return re.test(suggestion.value);
    },
    onSelect: function(suggestion) {
        $('#selction-ajax').html('You selected: ' + suggestion.value + ', ' + suggestion.data);
    },
    onHint: function (hint) {
        $('#autocomplete-ajax-x').val(hint);
    },
    onInvalidateSelection: function() {
        $('#selction-ajax').html('You selected: none');
    }
}); 

【问题讨论】:

  • 到目前为止你做了什么/尝试了什么?
  • @GSDa 你能展示你的代码来为你提供帮助吗?如果我们不知道您做了什么或至少尝试过做什么,谁能帮助您?
  • @urbz 我更新了帖子!
  • @AllBlond 我更新了帖子!

标签: jquery html ajax asp-classic autocomplete


【解决方案1】:

您可以更改您的正则表达式以在建议中的任何位置搜索整个单词,如下所示:

var re = new RegExp('\\b' + $.Autocomplete.utils.escapeRegExChars(queryLowerCase) + '\\b', 'gi');

否则,如果你只想搜索单词的一部分,你可以改为 indexOf,如下所示:

lookupFilter: function(suggestion, originalQuery, queryLowerCase) {
    return re.test(suggestion.value.indexOf(queryLowerCase) != -1);
},

【讨论】:

  • 感谢您的回复,我发现了模糊库。我现在正在使用 FuzzySet.js,它的搜索效率更高。
猜你喜欢
  • 2017-07-18
  • 1970-01-01
  • 2021-12-03
  • 2015-07-20
  • 1970-01-01
  • 2012-07-01
  • 2012-03-20
  • 2013-10-27
相关资源
最近更新 更多