我想用 jQuery 插件包装标准的 jQuery UI 自动完成功能,以实现多值自动完成功能。一切都很好,除了一件小事。我想提出关于重点的建议。我应该如何修改我的代码?
(function ($) {
$.fn.myautocomplete = function (options) {
var defaults = {
source: null,
minLength: 0,
separator: ", "
};
var o = {};
$.extend(o, defaults, options);
var split = function(val) { return val.split(/,\s*/); };
var extractLast = function(term) { return split(term).pop(); };
if (o.source == null) return this;
return this.each(function () {
$(this).autocomplete({
source: function(request, response) {
$.ajax({
url: o.source,
data: { term: extractLast(request.term) },
success: function(data) {
response($.map(data, function(item) {
return { label: item.Name };
}));
}
});
},
search: function() {
return extractLast(this.value).length > o.minLength;
},
focus: function() {
//$(this).trigger('keydown.autocomplete');
$(this).data("autocomplete").search($(this).val());
//return false;
},
select: function(event, ui) {
var terms = split(this.value);
terms.pop();
terms.push(ui.item.label);
terms.push("");
this.value = terms.join(o.separator);
return false;
}
});
});
};
})(jQuery);
我已经尝试了您在焦点处理程序中看到的所有内容。