36457


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

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

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

[code]

    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));
      }
    });
    
[/code]

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

[code]

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

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


CC BY-SA 3.0
2017-07-14T14:03:16.760
36366
2017-07-17T19:02:07.140
2017-07-14T21:00:19.537
24410
24410
question
javascript jquery 正規表現 array
JQuery UIのAutocompleteで表示されないレコードがある


`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)`  
でコンソール出力したところ、予想通りの結果を表示していることも確認できています。

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


CC BY-SA 3.0
2017-07-17T19:02:07.140
36457
2017-07-17T19:02:07.140
24410
36366
answer