Skip to main content
 首页 » 编程设计

jQuery 自动完成之仅在输入特殊字符时才需要启动

2026年07月31日7telwanggs

我相信你们已经见过这个优秀的插件:

http://code.drewwilson.com/entry/autosuggest-jquery-plugin

我检查了一下,找不到仅在键入特定字符时启动自动建议插件的选项。在本例中,我需要它是 at 符号“@”。

我看到它可以选择设置最小字符数: minChars:数字(默认为 1)

但是,我需要在键入 @ 符号之前不显示下拉列表。

仅供引用,以下是 jquery.autoSuggest.js 中的选项

        var defaults = {  
        asHtmlID: false, 
        startText: "Enter Name Here", 
        emptyText: "No Results Found", 
        preFill: {}, 
        limitText: "No More Selections Are Allowed", 
        selectedItemProp: "value", //name of object property 
        selectedValuesProp: "value", //name of object property 
        searchObjProps: "value", //comma separated list of object property names 
        queryParam: "q", 
        retrieveLimit: false, //number for 'limit' param on ajax request 
        extraParams: "", 
        matchCase: false, 
        minChars: 1, 
        keyDelay: 400, 
        resultsHighlight: true, 
        neverSubmit: false, 
        selectionLimit: false, 
        showResultList: true, 
        start: function(){}, 
        selectionClick: function(elem){}, 
        selectionAdded: function(elem){}, 
        selectionRemoved: function(elem){ elem.remove(); }, 
        formatList: false, //callback function 
        beforeRetrieve: function(string){ return string; }, 
        retrieveComplete: function(data){ return data; }, 
        resultClick: function(data){}, 
        resultsComplete: function(){} 
    };   
    var opts = $ 

谢谢!

请您参考如下方法:

我认为你可以使用beforeRetrieve:

beforeRetrieve: function(string){ 
 if (string.indexOf('@') == -1) return ""; 
 return string; 
} 

来自文档:

beforeRetrieve:回调函数 - 在发出 AJAX 请求之前或在搜索本地对象之前运行的自定义函数。这用于在处理搜索字符串之前对其进行修改。因此,如果用户在 AutoSuggest 框中输入“jim”,您可以调用此函数在其查询前面添加“guy_”。进行最终查询=“guy_jim”。搜索查询被传递到该函数中。示例: beforeRetrieve: function(string){ return string; }