11

単純な配列からの入力でjqueryオートコンプリートを使用して、文字列の先頭から完全一致を有効にするにはどうすればよいですか?

配列に次のものがある場合:

  • 頭いい
  • 賢すぎる
  • スマートランド
  • アンダースマート
  • とても賢い

また、テキスト入力で「sma...」と入力すると、smart と smartland のみが表示され、他は表示されません。

4

5 に答える 5

15

必要に応じて、ソース パラメータを関数として変更するだけです。このような:

http://jsfiddle.net/UKgD6/


更新: 回答するコードを追加:

var acList = ['smart', 'oversmart', 'smartland', 'undersmart', 'verysmart'];
$('#ac').autocomplete({
    source: function (request, response) {
        var matches = $.map(acList, function (acItem) {
            if (acItem.toUpperCase().indexOf(request.term.toUpperCase()) === 0) {
                return acItem;
            }
        });
        response(matches);
    }
});
于 2012-05-05T17:25:04.470 に答える
3

これを行う方法は、http://api.jqueryui.com/autocomplete/に記載されています。

<script>
    var tags = [ "c++", "java", "php", "coldfusion", "javascript", "asp", "ruby" ];
    $( "#autocomplete" ).autocomplete({
      source: function( request, response ) {
              var matcher = new RegExp( "^" + $.ui.autocomplete.escapeRegex( request.term ), "i" );
              response( $.grep( tags, function( item ){
                  return matcher.test( item );
              }) );
          }
    });
</script>
于 2016-07-28T14:52:57.147 に答える
1

正規表現を使用して、入力した部分文字列を配列内の値と一致させることができます。

于 2012-05-05T17:18:27.477 に答える
0

これは、以前の回答が受け入れられてから変更されました。これlookupFilterを行うオプションがあり、はるかに簡単になりました。https://stackoverflow.com/a/23239873/1204434から、これをオプションのリストに追加するだけです:

lookupFilter: function (suggestion, originalQuery, queryLowerCase) {
                return suggestion.value.toLowerCase().indexOf(queryLowerCase) === 0;
            },
于 2015-04-30T03:36:48.240 に答える
0

JQuery にはプラグインが多すぎます。それに少し正規表現を振りかけて、次のように記述します(テストはしていませんが、以前に同様のことを行ったことがあります)。

$('#someTextInput').keyup( function(){
    var regExMatch = new RegEx( '^' + $(this).val() );
    $_LIs = $('#someUl li');
    $_LIs.hide();
    $_LIs.each( function(){
        if( this.innerText.match(regExMatch) ) { $(this).show(); }
    } );
} );

パラメータの を削除して'^' +new RegEx問題があると説明している動作を復元できます。'^'行/文字列の選択の開始を意味するため、's' は最初にない限り一致しません。

于 2012-05-05T17:52:43.713 に答える