jquery自动完成按小写搜索

时间:2012-06-25 11:51:07

标签: jquery jquery-ui autocomplete jquery-ui-autocomplete

我想用小写的jquery自动完成插件。该数组包括大写,小写字。当我在文本框中写文本时,jquery应该将该文本转换为小写,并将数组单词转换为小写,然后匹配单词。

var names = [{
    value: "1",
    label: "Jon Kerer"},
{
    value: "2",
    label: "Scott MART"},
{
    value: "3",
    label: "Sel HURGE"}
];​

$("#myInput").autocomplete({
    focus: ..... ? 
    select : .... ? 
    source : ... ?
});​

2 个答案:

答案 0 :(得分:2)

您需要创建一个字符映射并对名称进行一些解析。这只是一些角色的入门名单。您可以尝试使用一些全球化库来查找完整的集合

DEMO:http://jsfiddle.net/uQK5s/

var accentMap = {
    "á": "a",
    "ö": "o",
    "Ş": "S",
    "á": "a"
};
var normalize = function(term) {
    var ret = "";
    for (var i = 0; i < term.length; i++) {
        ret += accentMap[term.charAt(i)] || term.charAt(i);
    }
    return ret;
};

$("#test").autocomplete({
    source: function(request, response) {
        var matcher = new RegExp($.ui.autocomplete.escapeRegex(request.term), "i");
        response($.grep(names, function(value) {
            value = value.label || value.value || value;
            return matcher.test(value) || matcher.test(normalize(value));
        }));
    }
});

答案 1 :(得分:0)

使用toLowerCase()将字符串转换为小写:

var string = 'Test String';
string = string.toLowerCase(); //string is now 'test string'

我不确定你是如何“匹配”单词的,但是你应该可以对数组中的值使用相同的函数,然后根据需要进行比较/匹配。