JQuery UIのAutocompleteで表示されないレコードがある

投稿者: Anonymous

ウェブプログラミング初心者です。JQuery UIのAutocompleteでユーザー入力文字と同じ文字が配列に含まれる場合、そのレコードを表示したいと思っています。

一致するレコードのいくつかは表示されるのですが、データベースと照らし合わせたところ表示されていないレコードがあります。

customFilterをデバッグしたところ、arrayには正しいリストが渡されておりtermにも入力したテキストボックスの値が格納されています。

function customFilter(array, terms) {
    arrayOfTerms = terms.split(" ");
    var term = $.map(arrayOfTerms, function (tm) {
         return $.ui.autocomplete.escapeRegex(tm);
    }).join('|');
   var matcher = new RegExp("\b" + term, "i");
    return $.grep(array, function (value) {
       return matcher.test(value.label || value.value || value);
    });
};

$( "#frmCode" ).autocomplete({
  multiple: true,
  mustMatch: false,
  minLength: 2,
  source: function (request, response) {
    response(customFilter(
    availableCode, request.term));
  }
});

こちらも試してみましたが、解決できませんでした。

var a = $.grep(array, function(value){
  var matcher = new RegExp("\b" + term, "i");
  return matcher.test(value);
});

どなたかアドバイスを頂けますでしょうか。宜しくお願いいたします。

解決

var matcher = new RegExp("\b" + term, "i");
から
var matcher = new RegExp("" + term, "i");
に変更することにより問題なく動作するようになりました。ありがとうございました。

console.log("result - " + matcher.test(value.label || value.value || value));
console.log("value - " + value)

でコンソール出力したところ、予想通りの結果を表示していることも確認できています。

アドバイスくださったみなさま、ありがとうございました。

回答者: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *