2013-04-30 10 views
15

Mam jQuery UI Autocomplete który działa dobrze, jeśli zwrócony json obiekt wygląda tak:wartość jQueryUI autouzupełnianie inna niż etykieta

label:name 
value:name 

Potem przeszukuje myname i gdy użytkownik wybierze jedną, to zapełnia pole wprowadzania z myname.

Ale co ja chcę to obiekt JSON wyglądać tak:

label:name 
value:id 

Kiedy to zrobić, autouzupełnianie zapełnia pole wejścia o numerze id zamiast napisu nazwy.

Jak ustawić autouzupełnianie w wyświetlanym tekście na nazwę i ukrytą wartość?

Nie widzę sposobu, aby to zrobić w oficjalnych dokumentach.

Oto mój autouzupełnianie:

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

I JSON to powrót:

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

możliwe duplikat [autouzupełnianie zastosowanie do oznaczania wartości nie tekstowym] (http://stackoverflow.com/questions/7642855/autocomplete-applying-value-not-label-to-textbox) –

Odpowiedz

10

Nie ma zbudowany w sposób to zrobić. Zamiast tego należy zastąpić wartość select event i zaktualizować wartość 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 
}); 
Powiązane problemy