2011-08-17 18 views
7

Örnek kod burada bulanıklık sonra girilen aynı harf(): http://jsbin.com/etaziy bir 'j' sen 3 isim olsun yazarsanız, 'John' 'jquery ui .autocomplete() ateş değilken

(http://jqueryui.com/demos/autocomplete/ kullanarak) Jack ve Joe. Eğer daha sonra uzaklaşırsanız, girdiyi val ('') yaparak, girişi temizlerim. Daha sonra girdiye geri dönüp tekrar 'j' yazarsanız hiçbir şey olmaz mı? Açılır pencereyi gösteren ikinci bir eşleşen harf yazana kadar olmaz.

Örneğim biraz tuhaf görünebilir, ancak aslında bu, üzerinde çalıştığım şeyin gerçekten kesilmiş bir sürümüdür. Bir bulanıklık() sonrasında girdiyi temizlemem ve seçim yapıldıktan sonra temizlemem gerekiyor. Bunu yapmak sonraki seçimlerin buggy olmasını sağlıyor.

Kısmen bunun amaçlanan bir işlevsellik olduğunu düşünüyorum, ama amacım için, istediğim değil. Herhangi bir harf yazılır yazmaz listelemek için açılır listeye gerçekten ihtiyacım var.

Şerefe.

cevap

10

sorun otomatik tamamlama dahili olarak eşleşen bir değer izler olduğunu, bu nedenle ilk tip j boş dizeye 'j' ve sonra olmak değildi reset için bu iç değerini ayarlar zaman zaman sizi girişin boş olması için değiştirildi.

Otomatik tamamlama kaynağına baktıktan sonra, iç değişkene doğrudan nasıl erişilebileceğini öğrenemedim, ancak girişi tamamladığınızda başka bir arama yaparak otomatik tamamlamayı sizin için güncellemeye zorlayabilirsiniz. boş (ve sıfır uzunluğunda aslında arama yapmaz).

$(function() { 
    $("#search").autocomplete({ 
       source: data, 
       change: function() { // Triggered when the field is blurred, if the value has changed; ui.item refers to the selected item. 
         $("#search").val(""); 
         $("#search").autocomplete("search", ""); //THIS IS THE NEW LINE THAT MAKES IT HAPPY 
       } 
     }); 
}); 
4

Sadece if(true){

ile jquery.ui.autocomplete.js

if (self.term != self.element.val()) { // only search if the value has changed 

çizgiyi 98 yerine