2013-04-30 10 views
15

Ich habe eine jQuery UI Autocomplete, die gut funktioniert, wenn das zurück json Objekt sieht wie folgt aus:jQueryUI automatische Vervollständigung Wert anders als Label

label:name 
value:name 

Dann sucht es durch myname und wenn der Benutzer eine auswählt, füllt sie das Eingabefeld mit meinem Namen.

Aber was ich will, ist für das JSON-Objekt wie folgt aussehen:

label:name 
value:id 

Wenn ich dies tun, füllt der Autovervollständigung das Eingabefeld mit der ID-Nummer anstelle des Namens Zeichenfolge.

Wie kann ich die automatische Vervollständigung den angezeigten Text auf den Namen und den versteckten Wert auf den Wert setzen lassen?

Ich sehe keine Möglichkeit, dies in den offiziellen Dokumenten zu tun.

Hier ist meine Autocomplete:

$("#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); 
      }); 
     } 
    }); 

Und die JSON es zurückzubekommen:

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

möglich Duplikat von [Automatische Vervollständigung Wert Anwendung zu Textbox nicht beschriften] (http://stackoverflow.com/questions/7642855/autocomplete-applying-value-not-label-to-textbox) –

Antwort

10

Es gibt keinen in Art und Weise gebaut, dies zu tun. Stattdessen sollten Sie den Wert select event überschreiben und den Wert input selbst aktualisieren.

$("#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 
}); 
Verwandte Themen