11

devo Fiddle hereJquery fonte cambiamento di completamento automatico

E ho bisogno availabletags1 come sorgente se si tratta di pulsante di opzione Choice1 viene scelto e availabletags2 se si sceglie pulsante scelta2. E devo cambiarlo dinamicamente con la scelta effettiva dell'utente.

CODICE:

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

sono '' e 'availabletags1 availabletags2' array –

+0

anche ciò che è' 'e' Choice1 choice2' –

+0

Sry, che inserisco collegamento sbagliato su jsfiddle, ora dovrebbe essere ok. –

risposta

24

Prova

$('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

Ottimo, funziona. Ora ho solo bisogno di unire la tua soluzione con questo [http://jsfiddle.net/7RL4p/11/](http://jsfiddle.net/7RL4p/11/) e ancora non riesco a farlo funzionare. –

+1

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

+0

Incredibile, grazie. Sai come aggiungere la ricerca per "lettera digitata" - voglio dire - se l'utente digita "c" ora (da availableTags1) - mostra javascript, ma non voglio mostrare nulla, perché niente inizia con c. E così via (se user type (from availableTags1) Sc - dovrebbe mostrare Scala, Scheme; se Sca - ora solo Scala). Spero di averlo scritto comprensibile. E anche - è in qualche modo posibile per impostare il numero massimo di valori visualizzati? Grazie –

11

Per chiunque leggendo questo nel 2016 e oltre, c'è un modo migliore utilizzando il modello request/response. jQuery autocomplete ha un'opzione source che accetta una funzione che riceverà due argomenti quando invocato dal plugin: request e response. request è un oggetto contenente informazioni sul componente di completamento automatico, ovvero request.term, che è il valore del campo di input. response è una funzione che accetta un singolo parametro, i dati restituiti response(data). come puoi vedere nel mio esempio qui sotto, puoi usare questa opzione per facilitare una richiesta Ajax. puoi semplicemente passare la funzione request come callback di successo ai metodi jQuery $.ajax e funzionerà come previsto. potresti anche fare altre cose interessanti usando questo modello, come cercare in memoria se hai già recuperato e messo in cache alcuni dati, rendendo le ricerche successive più realistiche per gli utenti.

$('#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 
});