2012-06-25 110 views
0

我想用小寫工作jquery自動完成插件。該數組包括大寫,小寫字詞。當我在文本框中寫文本時,jquery應該將文本轉換爲小寫,並將數組轉換爲小寫,然後再匹配單詞。jquery自動完成小寫搜索

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

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

嘗試toLowerCase() –

+2

所以你想自動完成不區分大小寫?你猜怎麼了?它已經不區分大小寫! http://jsfiddle.net/Gs6hm/嘗試寫大寫字母小寫,反之亦然 – jakee

+0

var名稱數組包含不同的國家特定名稱。土耳其語,日本,韓國,......所以所有國家的名稱都包含特定的字符。 (Şak,Örn,örn,ález),所以jquery找不到所有的名字。 – bayramucuncu

回答

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)); 
     })); 
    } 
}); 
0

使用toLowerCase()將字符串轉換爲小寫:

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

我不知道你是如何「匹配」的話,但你應該能夠使用相同的功能的數組中的值,然後根據需要進行比較/匹配。

+0

var名稱數組包含不同的國家特定名稱。土耳其語,日本,韓國,......所以所有國家的名稱都包含特定的字符。 (Şak,Örn,örn,ález),所以jquery找不到所有的名字。 – bayramucuncu