2012-05-05 31 views
9

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

私は配列で、次のしている場合:

  • undersmart
    • スマート
    • oversmart
    • smartland

    verysmartそして、私は「SMAを入力しています。 .. "テキストの入力では、私はスマートでスマートランドではなく、その他。

  • +0

    可能重複で文書化されて実行する方法を[jQueryのオートコンプリートのプラグイン検索設定](のhttp:/ /stackoverflow.com/questions/2382497/jquery-autocomplete-plug-in-search-configuration) – j08691

    答えて

    12

    必要に応じて、ソースパラメータを関数として変更するだけで済みます。

    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); 
        } 
    }); 
    
    +0

    素晴らしい...魅力のように、まさに私がjqueryオートコンプリートで探していたものです - ありがとう! –

    1

    正規表現を使用して、入力した部分文字列を、使用している配列の値と照合することができます。

    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'は開始時以外は一致しません。

    +0

    Erik - ありがとう、私はこれを心に留めて、それがオートコンプリートの中にどのように収まるか見るために微調整する... –

    0

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

    lookupFilter: function (suggestion, originalQuery, queryLowerCase) { 
           return suggestion.value.toLowerCase().indexOf(queryLowerCase) === 0; 
          }, 
    
    2

    これはの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> 
    
    関連する問題