2012-05-05 15 views
9

Basit diziden giriş ile jquery otomatik tamamlama kullanarak dize başlangıcından tam eşleştirmeyi nasıl etkinleştiririm?otomatik tam tam eşleme jquery autocomplete kullanarak başlatmak basit diziden

i bir dizi aşağıdaki varsa:

  • smartland
  • verysmart

  • undersmart Ve "SMA yazarak ediyorsam

    • akıllı
    • oversmart. .. "metin girişinde, sadece akıllı ve zeki gösterilmeli, değil diğerleri.

  • +0

    olası kopya olarak belgelenmiştir yapmanın yolu [jQuery otomatik eklenti arama yapılandırması] (http://stackoverflow.com/questions/2382497/jquery-autocomplete-plug-in-search-configuration) – j08691

    cevap

    12

    Sadece kaynak parametresini gereksinimlerinize uygun bir işlev olarak değiştirmeniz gerekir. Şunun gibi:

    http://jsfiddle.net/UKgD6/


    Güncelleme: Kod cevap ekleme:

    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

    Harika ... jquery otomatik tamamlama ile tam olarak aradığım şey, bir çekicilik gibi çalışıyor - teşekkürler! –

    1

    Girilen alt dizeyle sahip olduğunuz dizideki değerlerle eşleştirmek için normal ifadeleri kullanabilirsiniz.

    0

    JQuery yol çok sayıda eklentileri vardır. Sadece üzerine küçük bir Regex serpin ve bunun gibi şeyler yazmak (Bunu test etmedi ama daha önce benzer şeyler yaptık):

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

    davranışında geri new RegEx parametrelerinde '^' + kaldırabilir sen problemli olarak tanımlanıyor. '^', bir satır/dize seçiminin başlangıcını belirtir, böylece başlangıçta olmadığı sürece "s" eşleşmez.

    +0

    Erik - teşekkürler, bunu akılda tutup bir tamamlamada nasıl görüneceğini görmek için ... –

    0

    Önceki yanıt kabul edildiğinden bu durum değişti. Bunu yapmak için şimdi bir lookupFilter seçeneği var ve çok daha basit. https://stackoverflow.com/a/23239873/1204434 itibaren sadece seçeneklerden listenize bu ekleyin:

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

    Bunun 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>