Tôi đang sử dụng JQueryUI Tự động điền và tự hỏi cách sử dụng đối tượng tùy chỉnh làm nguồn dữ liệu của mình (ví dụ: tôi muốn trả lại danh sách loại sau):Đối tượng tùy chỉnh tự động hoàn thành giao diện người dùng jQuery dưới dạng nguồn thay vì chuỗi chuỗi
public class Tag
{
public string Name { get; set; }
public int Count { get; set; }
}
mã autocomplete mà tôi hiện đang sử dụng (và đó hoạt động tốt khi tôi vượt qua trở lại một mảng chuỗi thẳng về phía trước tên) là khá nhiều bản sao ra khỏi trang web jQuery UI:
$(function() {
function split(val) {
return val.split(/ \s*/);
}
function extractLast(term) {
return split(term).pop();
}
$("#tags")
// don't navigate away from the field on tab when selecting an item
.bind("keydown", function (event) {
if (event.keyCode === $.ui.keyCode.TAB &&
$(this).data("autocomplete").menu.active) {
event.preventDefault();
}
})
.autocomplete({
source: function (request, response) {
$.getJSON("Home/GetTag", {
term: extractLast(request.term)
}, response);
},
search: function() {
// custom minLength
var term = extractLast(this.value);
if (term.length < 1) {
return false;
}
},
focus: function() {
// prevent value inserted on focus
return false;
},
select: function (event, ui) {
var terms = split(this.value);
// remove the current input
terms.pop();
// add the selected item
terms.push(ui.item.value);
// add placeholder to get the comma-and-space at the end
terms.push("");
this.value = terms.join(" ");
return false;
}
});
});
điều duy nhất Tôi đã thay đổi từ nguồn bản demo gốc là Url và tôi đang chia nhỏ một dấu cách chứ không phải dấu phẩy (để tự động hoàn thành nhiều lần).
Đây là HTML:
<div class="ui-widget">
<label for="tags">Tags: </label>
<input id="tags"/>
</div>
Lý tưởng nhất, tôi muốn giới thiệu cho người dùng một danh sách tên, với số lượng tương ứng bên cạnh.
Cảm ơn Andrew - Giải pháp hoàn hảo, hoạt động tuyệt vời. – marcusstarnes
@marcusstarnes: Không sao cả! Vui mừng được giúp đỡ. –