我正在使用带有类别选项的 jquery automplete,一切工作正常。现在我想让类别可供选择。我已经经历了很多事情,但没有任何效果。有什么方法可以使类别可选择而不是标签。
我的代码如下:
$.widget("custom.catcomplete", $.ui.autocomplete, {
_renderMenu: function (ul, items) {
var self = this;
var currentCategory = "";
$.each(items, function (index, item) {
if (item.category != currentCategory) {
ul.append("<li class='ui-autocomplete-category'>" + item.category + "</li>");
currentCategory = item.category;
}
self._renderItem(ul, item);
});
},
});
$('#city').catcomplete({
delay:0,
source : function(request, response) {
$.ajax({
url : '${createLink(controller:"city", action:"ajaxData")}',
data : {
term : request.term
},
dataType : "json",
success : function(data) {
if (data.length > 0) {
response( $.map( data, function( item ) {
return {
label: item.label,
value: item.category,
category: item.category,
}
}));
}
else{
response([{ category: 'No results found', val: "",label:""}]);
}
}
});
},
focus: function(event, ui) {
$("#city").val(ui.item.category);
return false;
} ,
select: function( event, ui ) {
window.location.href = ui.item.category;
},
});
最佳答案
这可以解决您的问题,但可能不是最佳解决方案。
我做了什么
- 为类别选项添加了一个点击事件监听器,它将调用
selectHandler()
处理从自动完成列表中选择的选项。 - 通过添加
ui-menu-item
将类别选项构建为菜单项类到<li>
标签,这将使类别选项具有与列表中其他选项相同的视觉效果。
现场演示@ JSFiddle:
http://jsfiddle.net/dreamweiver/bp0x1yc4/11/
JS 代码:
$(document).on('click', '.ui-autocomplete-category', function () {
$("#search").val($(this).html());
$("#search").catcomplete("close");
selectHandler($(this).html());
});
var selectHandler = function (data) {
//process selected data
console.log("selected value: " + data);
};
关于jquery 自动完成与类别选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30804203/