2009-05-12 22 views
6

İki giriş alanı olan bir sayfam var Şehir ve Mekan. Şehir alanı için harika çalışan Devbridge'dan otomatik tamamlama eklentisi var. Şimdi mekan alanında çalışmayı istiyorum. Bugüne kadar sahip javascript:Jquery Otomatik Tamamlama Zincirli İstekler

<script type="text/javascript"> 
    $(document).ready(function() { 
     $('#Event_City').autocomplete({ 
      serviceUrl: '<%=Url.Action("GetCities", "Search") %>', 
      minChars:2, 
      width: 300, 
      delimiter: /(,|;)\s*/, 
      deferRequestBy: 150, //miliseconds 
      params: { country: 'Yes' }, 
     }); 
     $('#Event_Venue').autocomplete({ 
      serviceUrl: '<%=Url.Action("GetVenues", "Search") %>', 
      minChars:2, 
      width: 300, 
      delimiter: /(,|;)\s*/, 
      deferRequestBy: 150, //miliseconds 
      params: { city: $("#Event_City").val() }, 
     }); 
    });  
</script> 

ikinci otomatik tamamlama benim denetleyicisi eylem için ek Paramtre (şehir) geçer. Daha sonra bu şehirdeki mekanlara verilen yanıtları kısıtlamak için kullanacağım. Bu parametre alındı, ancak #Event_City'de girilen geçerli değeri içermiyor. Bunun yerine, varsayılan değeri içerir.

Otomatik tamamlama çağrıldığında değeri nasıl değerlendirileceğini bilen var mı?

Sadece Javascript ile başlıyorum, lütfen nazik olun.

sayesinde

+0

Ben de aynı şeyi sormak üzereydim. 'Normal' parametresini geçmeye çalışıyordum ama sanırım alan onchange olayı kullanılmadan güncellenmiyor. –

cevap

7

@Ian Mckay: Ben (demo sayfası) oldukça çok yönlü olarak çok bunu sevdim eğilimindedir aşağıdaki gibi İl ait "değişim" olay bağlamak için:

$(document).ready(function() { 
    $('#Event_City').autocomplete({ 
     serviceUrl: '', 
     minChars:2, 
     width: 300, 
     delimiter: /(,|;)\s*/, 
     deferRequestBy: 150, //miliseconds 
     params: { country: 'Yes' }, 
    }).change(function(){ 
     $('#Event_Venue').autocomplete({ 
      serviceUrl: '', 
      minChars:2, 
      width: 300, 
      delimiter: /(,|;)\s*/, 
      deferRequestBy: 150, //miliseconds 
      params: { city: $("#Event_City").val() } 
     }); 
    }); 
}); 
+0

Bunun otomatik tamamlama eklentisini metin kutusuna birden çok kez bağlamayacağından emin misiniz? Bu kötü olabilir. Örneğin, ilk metin kutusunun değerini değiştirirseniz, 20 kez, ikinci metin kutusunun otomatik olarak 20 kez (o zaman da arka uçta 20 eşzamanlı olmayan ajax çağrıları yapar) otomatikleştirilmesi gerekir mi? o_0 – KyleFarris

+0

@Kyle - Doğru olduğuna inanıyorum. Kullanıcı geri dönüp şehri değiştirmeye karar verirse bu gerçekleşir. Standart otomatik tamamlama jQuery eklentisi, geçirilebilecek bir "yok etme" seçeneğine sahiptir, ancak bu bir işlem yapmaz. –

3

o sayfa yüklendiğinde otomatik tamamlama metin takılır çünkü varsayılan değerdir içeren sebep. Yeni değerle güncellenmesi için eklentinin, parametre nesnesinin özelliklerini güncellemeniz için bir yol sağlaması veya ikinci öğede imha etmenize izin vermesi ve ardından kullanıcının ilk değiştirdiği her defasında yeniden oluşturması gerekir. kişinin değeri. Seçtiğiniz Otomatik Tamamlama kitaplığı oldukça hafif görünüyor (her zaman kötü bir şey değil ... sadece sizin durumunuzda ...) ve bu işlevi desteklemiyor gibi görünüyor.

Sizin için en iyi öneri başka bir kitaplık denemek olacaktır. İhtiyacınız, Şehir göre filtreleme yapmak Venue için Otomatik Tamamla alabilmek için -

http://view.jquery.com/trunk/plugins/autocomplete/demo/

+0

Çok iyi bir noktaya getirin +1 – ichiban

İlgili konular