2011-01-17 8 views
10

* Hikaye:jQuery UI Otomatik Tamamlama: Bir yerel json dizisi içinde sadece "etiketi" den fazlasını aramak

Ben kullanıcılar jQuery otomatik tamamlama yoluyla o okulda daha sonra sınıf bir okul arama yapabilirsiniz 2 arama çubukları ile bir site . Bütün veriler, örneğin bir YEREL json dizide geçerli:

var okulları = [{ "label": Boston Üniversitesi, "değer": Boston Üniversitesi, "takma": BU}]

* Sorun:

Arama yaparken, sadece "etiket" e değil, "takma ad" da kullanıcı girdisi ile eşleştirmek istiyorum, böylece okul hem "Boston Üniversitesi" hem de "BU" tarafından aranabilir.

$(document).ready(function(){ 
    $("#school").autocomplete({ 
    appendTo: ".custom-autocomplete", 
    source: schools, 
    minLength: 0, 
    select: function(event, ui) { 
     $("#class").autocomplete({ 
     appendTo: ".custom-autocomplete", 
source: courses, 
minLength: 2, 
select: function(event, ui) { 
      $('#submit_header_form').attr('class','submit_header_form'); 
} 
     }); 
    }); 
}); 

Biz bu sonucu elde etmek uzaktan verilere PHP kullanabilirsiniz biliyorum ama ben her okulda sınıfların çok şey var çünkü aramayı hızlandırmak için yerel bir dizi kullanmak gerekir: İşte şimdi benim kod.

Yeni bir kullanıcı koduyum ve yığın artık tam olarak işlev gördüğünden, hızlı bir düzeltme ideal olacaktır. Yardımınız için herkese teşekkürler!

+0

Yaygın bir çözüm Sonuç adına NICNAME eklemektir. Bu, havayolu endüstrisinde yaygın bir sorundur, örneğin, http://www.flightstats.com/go/Home/home.do adresinde bulunan ve (YYZ) Toronto International gibi havalimanlarına sahip olan bu siteye göz atın. Bir yorum olarak gönderme çünkü bu teknik bir cevap değil. – Incognito

cevap

22

Bunu, geri bildirim olarak source sağlayabilirsiniz. example on jQuery UI web sitesi vardır, ancak standart uygulamayı değiştirebilirsiniz.

source: function (request, response) { 
    var matcher = new RegExp($.ui.autocomplete.escapeRegex(request.term), "i"); 
    response($.grep(schools, function(value) { 
     return matcher.test(value.value) 
      || matcher.test(value.nickname); 
    })); 
} 

İşte keman var: http://jsfiddle.net/h5E6C/

+0

Tam olarak aradığım şey. Çok teşekkürler Alman Rumm! :) – Brian

+0

beni birkaç saat kurtardı! :) çok teşekkürler! –

İlgili konular