2013-04-30 27 views
15

Tôi có một jQuery UI Autocomplete rằng hoạt động tốt, nếu trở json đối tượng trông như thế này:giá trị jQueryUI Autocomplete khác với nhãn

label:name 
value:name 

Sau đó, nó tìm kiếm thông qua myname và khi người sử dụng chọn một, nó populates hộp nhập liệu với tên tôi.

Nhưng những gì tôi muốn là cho đối tượng json trông như thế này:

label:name 
value:id 

Khi tôi làm điều này, autocomplete populates hộp đầu vào với số id thay vì chuỗi tên.

Làm cách nào để tự động hoàn thành đặt văn bản được hiển thị cho tên và giá trị ẩn cho giá trị?

Tôi không thấy bất kỳ cách nào để thực hiện việc này trong tài liệu chính thức.

Dưới đây là autocomplete của tôi:

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

Và JSON nó nhận được trở lại:

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

bản sao có thể có của [Tự động điền giá trị không gắn nhãn vào hộp văn bản] (http://stackoverflow.com/questions/7642855/autocomplete-applying-value-not-label-to-textbox) –

Trả lời

10

Không được xây dựng theo cách để làm điều này. Thay vào đó, bạn nên ghi đè lên số select event và tự mình cập nhật giá trị 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 
}); 
Các vấn đề liên quan