11

mam Fiddle hereJquery źródło zmiana autouzupełnianie

I muszę availabletags1 jako źródło czy to Choice1 przycisk radiowy jest wybrany i availabletags2 jeśli Choice2 przycisk radiowy jest wybrany. Muszę to zmienić dynamicznie przez rzeczywisty wybór użytkownika.

KOD:

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

są '' i 'availabletags1 availabletags2' tablice –

+0

także to, co jest' 'i' Choice1 choice2' –

+0

Sry, ja zakładać niewłaściwy link na jsfiddle, teraz powinno być OK. –

Odpowiedz

24

Spróbuj

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

Demo: Fiddle

+0

Świetnie, działa. Teraz po prostu muszę połączyć twoje rozwiązanie z tym [http://jsfiddle.net/7RL4p/11/](http://jsfiddle.net/7RL4p/11/) i nadal nie mogę go uruchomić. –

+1

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

+0

Niesamowite, dzięki. Czy wiesz, jak dodać wyszukiwanie według "literówki" - mam na myśli - jeśli użytkownik typu "c" teraz (z availableTags1) - pokazuje javascript, ale chcę nic nie pokazywać, ponieważ nic nie zaczyna się od c. I itp. (Jeśli typ użytkownika (z dostępnych Tagów1) Sc - powinien pokazywać Scala, Scheme, jeśli Sca - teraz tylko Scala). Mam nadzieję, że napisałem to zrozumiale. A także - czy w jakiś sposób można ustawić maksymalną liczbę wyświetlanych wartości? Dzięki –

11

Dla każdego, kto czyta ten w 2016 roku i później, nie ma lepszego sposobu, za pomocą wzoru request/response. Autocomplete jQuery ma opcję source, która akceptuje funkcję, która otrzyma dwa argumenty po wywołaniu przez wtyczkę: request i response. request to obiekt zawierający informacje o składniku autouzupełniania, a mianowicie request.term, który jest wartością pola wejściowego. response jest funkcją, akceptującą pojedynczy parametr, zwrócone dane response(data). jak widać w moim przykładzie poniżej, możesz użyć tej opcji, aby ułatwić żądanie ajax. można po prostu przekazać funkcję request jako metodę oddzwaniania powodzenia do metod jQuery $.ajax i będzie działać zgodnie z przeznaczeniem. możesz również robić inne fajne rzeczy za pomocą tego wzorca, np. wyszukiwanie w pamięci, jeśli już pobrano i zapisano w pamięci podręcznej niektóre dane, dzięki czemu kolejne wyszukiwania będą bardziej rzeczywiste dla użytkowników.

$('#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 
}); 
Powiązane problemy