11

Ben Fiddle herejQuery otomatik tamamlama değişim kaynağı

sahip Ve seçim2 radyo düğmesi seçilirse o seçim1 radyo seçilir düğmesi ve availabletags2 buysa kaynağı olarak availabletags1 gerekir. Ve bunu dinamik olarak gerçek kullanıcı seçimiyle değiştirmem gerekiyor.

KODU:

var availableTags1 = [ 
"ActionScript", 
"AppleScript", 
"Asp" 
]; 

var availableTags2 = [ 
"Python", 
"Ruby", 
"Scala", 
"Scheme" 
]; 

$("#autocomplete").autocomplete({ 
source: availableTags1 
}); 

$('input[name="choice"]').click(function(){ 
if(this.checked){ 
    if(this.value == "1"){ 
     $("#autocomplete").autocomplete('option', 'source', availableTags1) 
    } else { 
     $("#autocomplete").autocomplete('option', 'source', availableTags2) 
    } 
+0

da –

+0

' availabletags1 've' availabletags2' dizilerdir, şimdi Tamam olmalıdır. –

+0

Sry choice2' 'seçim1' ve 'ne, ben jsfiddle yanlış bağlantı sonrası –

cevap

24

deneyin

$('input[name="choice"]').click(function(){ 
    if(this.checked){ 
     if(this.value == "1"){ 
      $("#autocomplete").autocomplete('option', 'source', availableTags1) 
     } else { 
      $("#autocomplete").autocomplete('option', 'source', availableTags2) 
     } 
    } 
}) 

Demo: herkes için Fiddle

+0

Harika, işe yarıyor. Şimdi çözümünüzü bu [http://jsfiddle.net/7RL4p/11/](http://jsfiddle.net/7RL4p/11/] ile birleştirmem gerekiyor ve hala işe yaramayacağım. –

+1

@LudvikCtrnacty bkz http://jsfiddle.net/arunpjohny/H9dUD/1/ –

+0

Şaşırtıcı, teşekkürler. "Yazılmış harf" ile arama nasıl ekleyeceğinizi biliyor musunuz - yani - eğer kullanıcı "c" şimdi (availableTags1'den) - javascript gösterir, ancak hiçbir şey göstermemek istiyorum, çünkü hiçbir şey c ile başlamaz. Ve vb (kullanıcı türü (availableTags1'den) Sc ise - Scala, Şema, Sca - sadece Scala ise) göstermelidir. Umarım bunu yazdım. Ve ayrıca - görüntülenen değerlerin maksimum sayısını ayarlamak mümkün mü? Teşekkürler –

11

2016 yılında bu okuma ve ötesinde, request/response kalıbı kullanarak daha iyi bir yol yoktur. jQuery autocomplete, request ve response: request tarafından çalıştırıldığında iki argüman alacak bir işlevi kabul eden bir source seçeneğine sahiptir. request, otomatik tamamlama bileşeni, yani giriş alanının değeri olan request.term hakkında bilgi içeren bir nesnedir. response, tek bir parametre kabul edilen response(data) numaralı veriyi kabul eden bir işlevdir. Aşağıdaki örnekte gördüğünüz gibi, ajax isteğini kolaylaştırmak için bu seçeneği kullanabilirsiniz.işlevini jQuery $.ajax yöntemlerinin başarı geri bildirimi olarak iletebilirsiniz ve amaçlandığı gibi çalışacaktır. Bu deseni kullanarak başka güzel şeyler de yapabilirsiniz, örneğin bazı verileri daha önce getirip önbelleğe aldığınızda, daha sonraki aramaları kullanıcılar için daha fazla gerçek zamanlı hale getirdiyseniz, bellekte arama yapmak gibi.

$('#term-search').autocomplete({ 
    source: function(request, response) { 
     $.ajax({ 
      url: $('#api-endpoint').val(),//whether you are using radios, checkboxes, or selects, you can change the endpoint at runtime automatically 
      dataType: "json", 
      data: { 
       query : request.term,//the value of the input is here 
       language : $('#lang-type').val(), //you can even add extra parameters 
       token : $('#csrf_token').val() 
      }, 
      success: response //response is a callable accepting data parameter. no reason to wrap in anonymous function. 
     }); 
    }, 
    minLength: 1, 
    cacheLength: 0, 
    select: function(event, ui) {} //do something with the selected option. refer to jquery ui autocomplete docs for more info 
}); 
İlgili konular