2013-04-30 18 views
15

Ho una jQuery UI Autocomplete che funziona bene, se restituita json oggetto simile a questo:valore jQueryUI Autocomplete diverso etichetta

label:name 
value:name 

Poi cerca attraverso mionome e quando l'utente seleziona uno, popola casella di input con myname.

Ma quello che voglio è per l'oggetto JSON a guardare come questo:

label:name 
value:id 

Quando faccio questo, il completamento automatico popola la casella di inserimento con il numero identificativo al posto della stringa nome.

Come posso avere il completamento automatico impostare il testo visualizzato sul nome e il valore nascosto sul valore?

Non vedo alcun modo per farlo nei documenti ufficiali.

Ecco il mio completamento automatico:

$("#eventAccount").autocomplete({ 
     minLength: 2, 
     source: function (request, response) { 
      var term = request.term; 
      if (term in cache) { 
       response(cache[term]); 
       return; 
      } 

      request.e = "getMyAccountAutocomplete"; 

      $.getJSON("/admin/ajaxController.php", request, function (data, status, xhr) { 
       cache[term] = data; 
       response(data); 
      }); 
     } 
    }); 

E il JSON è sempre indietro:

[{"label":"My fancy name","value":"229"}] 
+1

possibile duplicato [completamento automatico applicando valore non etichettare di testo] (http://stackoverflow.com/questions/7642855/autocomplete-applying-value-not-label-to-textbox) –

risposta

10

Non c'è costruito in modo per farlo. Invece, devi sostituire lo select event e aggiornare tu stesso il valore input;

$("#eventAccount").on("autocompleteselect", function (e, ui) { 
    e.preventDefault(); // prevent the "value" being written back after we've done our own changes 

    this.value = ui.item.label; 
    // Put ui.item.value somewhere 
}); 
Problemi correlati