2011-01-15 23 views
8

Uso la funzione di completamento automatico di jQuery ui.jQuery UI completamento automatico dati di aggiornamento

var colors; 

$(document).ready(function(){ 
     loadColors(); 
     $('#empf').autocomplete(colors); 
} 

function loadColors(){ 
colors = new Array(getNumColor()); 
//in a loop save the colors to array using colors[i] = ... 
} 

function addColor(){ 
    ... 
    color[n] = color; 
} 

Quando l'utente immette un nuovo colore, viene salvato nell'array di colori. Passo al modulo di completamento automatico ma i dati inseriti non sono disponibili fino a quando non aggiorno la pagina.

Qualche idea su come rendere disponibile il nuovo colore per il completamento automatico?

+0

Assicurati di inserire il tuo * codice * effettivo nelle domande ... ci sono alcuni errori nel codice che hai postato, la domanda è formulata come se * fosse * funzionante, quindi sto attribuendo questo a codice diverso nella domanda, si prega di commentare la risposta se ho frainteso ed è * non * attualmente funzionante. –

risposta

21

Quando si aggiorna il colore, è necessario aggiornare anche la source that autocomplete uses, in questo modo:

function addColor() { 
    //add colors 
    $('#empf').autocomplete("option", { source: colors }); 
} 

Here's a sample demo doing this, l'aggiunta di un colore e l'aggiornamento della fonte di completamento automatico una volta al secondo.

+0

grazie funziona ora! –

+0

@ArtWorkAD - welcome :) –

+0

Uso il completamento automatico ma con una funzione di callback per l'evento 'select'. Che ne pensi di fare questo ma non ri-impostare la funzione di callback? L'evento di callback funzionerebbe ancora o scomparirebbe? – madtyn

0

Ho provato la soluzione di Nick Craver, che sembra completamente logica. Forse, è perché sto usando una stringa URL piuttosto che una matrice come 'fonte'. Sfortunatamente la sua soluzione non esegue un aggiornamento dal vivo per i dati ajax restituiti. Al fine di aggiornare un'origine dati ajax, ho trovato che le seguenti opere:

element.autocomplete("option","source",url); 
element.autocomplete("search"); 

penso che è necessario il metodo di 'ricerca' per i tipi di stringa o di origine URL Ajax.

Problemi correlati