Vorrei utilizzare un completamento automatico con ajax. Quindi il mio obiettivo è quello di avere:Lift - Completamento automatico con invio Ajax
Quando l'utente digita qualcosa nel campo di testo, appaiono alcuni suggerimenti forniti dal server (devo trovare suggerimenti in un database)
quando l'utente preme "inserisci", fa clic da qualche altra parte rispetto alla casella di completamento automatico o quando lui/lei seleziona un suggerimento, la stringa nel campo di testo viene inviata al server.
ho provato ad utilizzare il widget di completamento automatico fornito da ascensore ma ho dovuto affrontare tre problemi:
- è destinata ad essere un selezionare esteso, vale a dire che si può inizialmente presentare soltanto i valori suggeriti .
- non è pensato per essere utilizzato con Ajax.
- diventa difettoso se combinato con
WiringUI
.
Quindi, la mia domanda è: Come posso combinare jquery autocomplete e interagire con il server in ascensore. Penso che dovrei usare alcune callback ma non le controllo.
Grazie in anticipo.
UPDATE Ecco una prima implementazione ho provato ma il callback non funziona:
private def update_source(current: String, limit: Int) = {
val results = if (current.length == 0) Nil else /* generate list of results */
new JsCmd{def toJsCmd = if(results.nonEmpty) results.mkString("[\"", "\", \"", "\"]") else "[]" }
}
def render = {
val id = "my-autocomplete"
val cb = SHtml.ajaxCall(JsRaw("request"), update_source(_, 4))
val script = Script(new JsCmd{
def toJsCmd = "$(function() {"+
"$(\"#"+id+"\").autocomplete({ "+
"autocomplete: on, "+
"source: function(request, response) {"+
"response("+cb._2.toJsCmd + ");" +
"}"+
"})});"
})
<head><script charset="utf-8"> {script} </script></head> ++
<span id={id}> {SHtml.ajaxText(init, s=>{ /*set cell to value s*/; Noop}) } </span>
}
Quindi la mia idea era:
- per ottenere il risultato selezionato tramite un campo
SHtml.ajaxText
che sarebbe stato inserito in un campo di completamento automatico - per aggiornare i suggerimenti di completamento automatico utilizzando una funzione javascript
Ciao, sfortunatamente non riesco a utilizzare l'ascensore 2.5. Sono sull'ascensore 2.4 M4. Tuttavia, da quello che ho già usato, sembra che ci siano già dei callback implementati in 2.4. Grazie per la tua risposta. –
Ho aggiornato la mia domanda con il momento in cui sono bloccato, qualsiasi suggerimento è benvenuto. –
Non sono sicuro di cosa intendi quando dici che il callback non funziona. Update_source è eseguito? Se è così, il tuo problema è probabile con il tuo ritorno. Stai facendo una chiamata asincrona, quindi non è sufficiente restituire il JSON, il browser non saprà cosa fare con esso. Dovrai restituire un JsCmd che esegue un'azione e il risultato di tale azione dovrebbe essere il popolamento del completamento automatico dell'interfaccia utente JQuery. –