自定义javascript自动完成的重音折叠

时间:2015-07-24 21:35:25

标签: javascript jquery autocomplete

我决定构建自己的javascript自动完成搜索,因为我有一个数组中超过120,000个元素的列表,而且简单的jQuery UI自动完成和jQuery自动完成只是没有为我工作。

实际证明这很简单,到目前为止,有80,000个元素的列表非常快。无论如何,我迫切需要在我的自动完成中引入重音折叠,但我不知道我应该如何去做它以保持高效。

这是我的JS:



   var arr = ["Wayne Réviér", "Wayne Röllo", "Wayne Rolls", "Wayne Grety",    "Wayne Rüm", "Wayne Erry"]; //Example list.

    var searchBox = document.getElementById('searchBox');
    jQuery('#searchBox').on('input propertychange paste', function() {
    $('div').html("");
      var listCounter = 0;
    	setTimeout(function(){ 
    	    if(searchBox.value.length >= 3) { //restrict to 3+ characters.
    	 	for (var i = 0; i < arr.length; i++) { //loop through array
    	 		if( listCounter <= 4) { //only show top 5 results.
    	 			searchBoxLower = searchBox.value.toLowerCase(); //make comparing easier
    	 			arrLower = arr[i].toLowerCase();
    	 			if(arrLower.indexOf(searchBoxLower) > -1) {
    		 				listCounter++; //result found. +1 counter.
                            $('div').append(arr[i]+"<br>");
    		 			}
    	 			}	
    	 		}
    	 	}
    
    	}, 5);
    });
&#13;
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input id="searchBox"/>
<div>
</div>
&#13;
&#13;
&#13;

我怎样才能在其中引入重音折叠?此外,如果你发现任何可以提高效率的东西我都喜欢听。谢谢!

1 个答案:

答案 0 :(得分:0)

我可能会在searchBoxLower上进行RegExp测试。我现在不在家测试代码,但我认为这篇文章可能会让你感兴趣。

http://alistapart.com/article/accent-folding-for-auto-complete

大多数情况下,当我需要自动完成搜索时,我正在使用Ajax和数据库,如果我这样说,我会用原始形式替换所有重音字符。防爆。所有的éèêàâôö等...与'e','a','o'。这使得搜索过程变得更加容易,但它会为您提供更多结果。

我希望这篇文章可以帮到你。

相关问题