2008-12-16 29 views
6

Sono alle prese con il seguente problema. Io uso lo jQuery autocomplete plugin per ottenere un elenco di valori suggeriti dal server. L'elenco sarebbe simile a questa:jQuery autocomplete - Come gestire i dati aggiuntivi?

 
Username1|UserId1 
Username2|UserId2 

Quindi, se mi metto a digitare "U", un elenco di "Username1" e "Username2" si apre, come previsto. Potrei scelto il primo elemento e il valore di 's il <input> sarebbe diventato "Username1", ma quello che veramente voglio inviare al server è l'ID utente.

Posso in qualche modo ottenere una sospensione del ID che sta seguendo il nome utente? Ho intenzione di fare il modulo di posta sul cambiamento della casella di testo. Forse sono troppo cieco per vederlo nei documenti o per trovarlo su Google?

risposta

6

utilizzare il metodo del plugin autocompleteresult per gestire questa situazione. I dati vengono passati come una matrice al callback e devi solo salvare da qualche parte. Qualcosa di simile a questo:

$("#my_field").autocomplete(...).result(function(event, data, formatted) { 
    if (data) { 
     $("#the_id").attr("value", data[1]); 
    } 
}); 
+0

Bello, grazie. Oltre a leggere il codice sorgente del plugin, come lo avrei scoperto? I documenti non lo menzionano, AFAICS. – Tomalak

+0

@Tomalak: è nella documentazione. Guarda qui: http://docs.jquery.com/Plugins/Autocomplete e scorri verso il basso fino alla Documentazione API e lo vedrai. – davidavr

+0

OK Devo essere cieco allora. Trovato. Continuo a pensare che non sia davvero ovvio, ma almeno posso dire che è il mio male. ;-) Grazie. – Tomalak

0

Stavo per elencare alcuni metodi qui, ma tutti, ma uno è spazzatura. Fai la stringa-> conversione utente sul server come hai fatto per generare un elenco per il completamento automatico.

Con tutti i mezzi mantenere il completamento automatico e fare la validazione AJAX, ma se si cerca di contrabbandare dati del modulo vitali (come questo) in forma tramite JS, qualcosa sarà andare male a un certo punto.

Inoltre, se avete bisogno di gestire non-JS user-agent, è necessario scrivere questo metodo in alcun modo.

+0

Questo non sta per diventare un'applicazione pubblico, quindi manca il supporto JS è un non-problema. Avresti ragione in generale, però. In effetti, stavo lavorando sulla cosa esatta che hai proposto, ma poi ho pensato che non poteva essere questo. Sembra troppo brutto. – Tomalak

+0

Non riesco a vedere come è brutto. Le alternative: aggiunta di campi modulo aggiuntivi e impostazione sulla scelta di completamento automatico; o mantenere l'ID selezionato in JS e hackerarlo alla fine dei dati del post. Fare di nuovo la ricerca è davvero il modo più pulito ... – Oli