jqueryuiオートコンプリートが適用されるクライアント側でxmlレコードをプリロードしました。「車、自転車、飛行機」
のようなレコードがあるとします。
現在(jquery ui autocompleteを使用している間)ユーザーが「car、bike」と入力すると、上記のレコードが見つかります。
ただし、ユーザーが次のように入力した場合:「カーバイク」(コンマの代わりに空白を意味します)->結果は表示されません。
「カーバイク」を指定された「カンマ」区切りのレコードと一致させる方法は?
jqueryuiオートコンプリートが適用されるクライアント側でxmlレコードをプリロードしました。「車、自転車、飛行機」
のようなレコードがあるとします。
現在(jquery ui autocompleteを使用している間)ユーザーが「car、bike」と入力すると、上記のレコードが見つかります。
ただし、ユーザーが次のように入力した場合:「カーバイク」(コンマの代わりに空白を意味します)->結果は表示されません。
「カーバイク」を指定された「カンマ」区切りのレコードと一致させる方法は?
2つの配列を分割して、一方をループし、もう一方の配列でループされたアイテムのインデックスを検索できると思います。
<script type="text/javascript">
var str="car,bike,plane";
var strToSearch= "car bike";
var splitted = str.split(",");
var strToSearchSplitted = strToSearch.split(' ');
var found = false;
for (var i in splitted){
if (strToSearchSplitted.indexOf(splitted[i]) != -1){
found = true;
break;
}
}
<script>
同じ状況に対処しているかもしれないのぞき見のために、ここに私が思いついた解決策があります、最初に簡単な説明:
より明確にするために、ここに私のコードがあります:(うまくいけばそれはあなたを助けるかもしれません)
$( "#field" ).autocomplete({
source:function(request, response) {
var query_array = request.term.toUpperCase().split(/\s+/g);//split on white space
if(query_array.length >1)// if two ore more words, separated by whitespace
{
if(!/^\s*$/.test(query_array[query_array.length-1]))//if last word is not only whitespace
{
var new_query = '';
for (var i=0; i<query_array.length; ++i )
{
new_query+='(\\b' +query_array[i]+'\\b)';//word boundaries
if(i<query_array.length-1)
{
new_query+="([\\s\\S\\.]*)";// match ALL characters including newline , * is for many
}
}
var matcher = new RegExp('^'+new_query, "g");//must Start with query term, apply regex global
var a = $.grep( autocomplete_data_array, function(item,index){
return matcher.test(item.value);
});
if(a.length>0)
{
response(a);
}
}
}