2012-06-03 12 views
5

C'è un modo per dire a completamento dell'interfaccia utente jQuery quali indici di array JSON utilizzare come "etichetta" e "valore" quando questi non sono i nomi di indice utilizzati nell'array JSON?Completamento dell'interfaccia utente jQuery: diciamolo "Etichetta" e "Valore"

L'aray contenente i miei valori di ricerca si presenta così (come registrati da Firebug):

[ Object { id="12", name="Don Davis" }, Object { id="17", name="Stan Smith" } ] 

voglio usare 'id' come il 'marchio' e 'il nome' come il 'valore', ma può 'capire come dire l'oggetto di configurazione.

Il mio array è contenuto in una variabile locale - non è stata effettuata alcuna chiamata Ajax.

Questo response a un'altra domanda risolve il problema creando un input di modulo nascosto, ma sembra probabile che ci sia un modo più pulito di gestirlo.

+0

Yu può fare quello che vuoi se usi una funzione come parametro "sorgente". –

risposta

7

Dalla lettura dei Jquery UI documenti si può provare qualcosa di simile:

<script> 
    $(function() { 
var projects = [ { id: "12",value: "Don Davis" }, { id: "17", value:"Stan Smith" } ] 

    $("#project").autocomplete({ 
     minLength: 0, 
     source: projects, 
     focus: function(event, ui) { 
      $("#project").val(ui.item.value); 
      return false; 
     }, 
     select: function(event, ui) { 
      $("#project").val(ui.item.value); 
      $("#project-id").val(ui.item.id); 

      return false; 
     }, 
     search: function(event, ui) { console.log(event); console.log(ui) } 
    }) 
    .data("autocomplete")._renderItem = function(ul, item) { 
     return $("<li></li>") 
      .data("item.autocomplete", item) 
      .append("<a>" + item.value+"</a>") 
      .appendTo(ul); 
    }; 
});​ 
    </script> 
+0

Grazie - la demo docs usa anche il campo nascosto per 'id' (come nel tuo campo # id-progetto), quindi immagino che sia il modo ufficialmente supportato per farlo, oltre a regolare direttamente gli indici dell'array JSON. In questo modo probabilmente si comporterebbe meglio. Grazie ancora. – cantera

+0

Si noti che in jQuery-ui 1.11 (e possibilmente in precedenza), 'data (" autocomplete ")' dovrebbe essere 'data (" uiAutocomplete ")' –

-1

È necessario restituire un array come questo: (server PHP lato)

for(...){
$suggest = array('value'=>$value,'label'=>$label); }

Problemi correlati