Javascript Jquery自动完成推荐

Javascript Jquery自动完成推荐,javascript,jquery,jquery-ui,Javascript,Jquery,Jquery Ui,我正在尝试JQuery自动完成示例。请参阅- 当我输入“Ar”时,它应该首先给出“Ar”相关项。但它首先显示“An”,尽管我已经给出了minLength1。可能是考虑按字母顺序排列。有没有解决这个问题的建议 minLength: 1, select: function(event, ui) { event.preventDefault(); $("#customer-search").val(ui.item.label); $("#

我正在尝试JQuery自动完成示例。请参阅-

当我输入“Ar”时,它应该首先给出“Ar”相关项。但它首先显示“An”,尽管我已经给出了
minLength
1。可能是考虑按字母顺序排列。有没有解决这个问题的建议

    minLength: 1,
    select: function(event, ui) {
        event.preventDefault();
        $("#customer-search").val(ui.item.label);
        $("#selected-customer").val(ui.item.label);
    },
    focus: function(event, ui) {
        event.preventDefault();
        $("#customer-search").val(ui.item.label);
    }
});

默认情况下,自动完成包含字符串的搜索项,而不是以开头

$('#customer-search').autocomplete({
    source: function(request, response) {
        var filtered = $.map(data, function(item) {
            if(item.value.toLowerCase().startsWith(request.term.toLowerCase())) {
                return item;
            }
            else {
                return null;
            }
        });
        response(filtered);
    }
});

默认情况下,自动完成包含字符串的搜索项,而不是以开头

$('#customer-search').autocomplete({
    source: function(request, response) {
        var filtered = $.map(data, function(item) {
            if(item.value.toLowerCase().startsWith(request.term.toLowerCase())) {
                return item;
            }
            else {
                return null;
            }
        });
        response(filtered);
    }
});

尝试更改“search”方法中命名空间中的正则表达式


请在jsfiddle.net/LCv8L/800/

中找到答案,尝试在“search”方法中更改命名空间中的正则表达式


请在jsfiddle.net/LCv8L/800/

中找到答案,在您的jsfiddle中运行此代码 它正在按您的要求工作……) //使用正则表达式是防止这种情况的更好方法

   var wordlist= [
       "Afghanistan",
        "Albania",
        "Algeria",
        "American Samoa",
       "Andorra",
        "Angola",
        "Anguilla",
        "Antarctica",
        "Antigua and Barbuda",
        "Argentina",
        "Armenia",
        "Aruba",
        "Australia",
        "Austria",
        "Azerbaijan"
    ] ; 

    $("#customer-search").autocomplete({

        source: function(req, responseFn) {
            var re = $.ui.autocomplete.escapeRegex(req.term);
            var matcher = new RegExp( "^" + re, "i" );
            var a = $.grep( wordlist, function(item,index){
                return matcher.test(item);
            });
            responseFn( a );
        }
    });

在JSFIDLE中运行此代码 它正在按您的要求工作……) //使用正则表达式是防止这种情况的更好方法

   var wordlist= [
       "Afghanistan",
        "Albania",
        "Algeria",
        "American Samoa",
       "Andorra",
        "Angola",
        "Anguilla",
        "Antarctica",
        "Antigua and Barbuda",
        "Argentina",
        "Armenia",
        "Aruba",
        "Australia",
        "Austria",
        "Azerbaijan"
    ] ; 

    $("#customer-search").autocomplete({

        source: function(req, responseFn) {
            var re = $.ui.autocomplete.escapeRegex(req.term);
            var matcher = new RegExp( "^" + re, "i" );
            var a = $.grep( wordlist, function(item,index){
                return matcher.test(item);
            });
            responseFn( a );
        }
    });

startsWith不支持某些浏览器这不适用于主题。很容易检查并替换为类似
的内容。indexOf(针)=0
。是的。最好像你说的那样提供一个好的解决方案,否则item.match!==null:)StartWith不支持某些浏览器这不适用于主题。很容易检查并替换为类似
的内容。indexOf(针)=0
。是的。最好像你说的那样提供一个好的解决方案,否则item.match!==null:)谢谢,我无法理解更改,请您详细说明,因为我说过我们可以手动进行搜索查询,并使用正则表达式返回源响应。在这里,他们为源绑定了一个方法,而不是JSON数组,并通过使用与给定输入匹配的regexp进行过滤,每次返回源,我无法理解更改,请您详细说明,因为我说过我们可以手动进行搜索查询,并使用正则表达式返回源响应。在这里,他们为源绑定了一个方法,而不是JSON数组,并通过使用与给定输入匹配的regexp进行过滤来每次返回源