Jquery ui jquery自动完成焦点事件项未定义
因此,我正在构建一个自定义自动完成框,其中一个本地数据数组看起来像是数据源:Jquery ui jquery自动完成焦点事件项未定义,jquery-ui,autocomplete,jquery-ui-autocomplete,Jquery Ui,Autocomplete,Jquery Ui Autocomplete,因此,我正在构建一个自定义自动完成框,其中一个本地数据数组看起来像是数据源: { label: "joe", category: "people" } 我定制了rendermenu功能,以启用菜单中的类别,如下所示: $.widget("custom.catcomplete", $.ui.autocomplete, { _renderMenu: function(ul, items) { var self = this,
{
label: "joe",
category: "people"
}
我定制了rendermenu功能,以启用菜单中的类别,如下所示:
$.widget("custom.catcomplete", $.ui.autocomplete, {
_renderMenu: function(ul, items) {
var self = this,
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);
});
}
});
其中getConfig是:
function getConfig(data) {
// autocomplete box configuration for searchbars
return {
delay: 0,
source: function (request, response) {
var prune = request.term,
arr = prune.split(":");
if (arr.length > 2) {
response();
} else {
response($.ui.autocomplete.filter(data, arr[arr.length - 1]));
}
},
select: function (e, ui) {
e.preventDefault();
addBit(ui.item);
e.originalEvent.stopPropagation();
},
focus: function (e, ui) {
//console.log(e);
//e.preventDefault();
//console.log(ui);
//$('ul.autocomplete li#floatinput input#search').val(ui.item.category + ":" + ui.item.label);
},
position: {
my: "left top",
at: "left bottom",
of: $("ul.autocomplete"),
collision: "flip flip"
}
}
}
然而,焦点事件并没有定义项。我试图一起去掉focus函数,结果得到:uncaughttypeerror:无法读取未定义的属性“value”。这意味着默认行为不起作用
欢迎任何建议
下面是我制作的一把小提琴,用来帮助说明jQueryUI>=1.9时使用
\u renderItemData
而不是\u renderItem
:
// getconfig
$.widget("custom.catcomplete", $.ui.autocomplete, {
_renderMenu: function(ul, items) {
var self = this,
currentCategory = "";
$.each(items, function(index, item) {
if (item.category != currentCategory) {
ul.append("<li style='clear:both'class='ui-autocomplete-category'>" + item.category + "</li>");
currentCategory = item.category;
}
self._renderItemData(ul, item);
});
}
});
//getconfig
$.widget(“custom.catcomplete”,$.ui.autocomplete{
_renderMenu:功能(ul,项目){
var self=这个,
currentCategory=“”;
$。每个(项目、功能(索引、项目){
如果(item.category!=当前类别){
ul.追加(“”+item.category+“ ”;
currentCategory=item.category;
}
自提交数据(ul,项目);
});
}
});
出现另一个错误:
未捕获的TypeError:无法读取未定义的属性“nodeType”
这是由于传递给position对象的属性的的选项引起的<代码>ul.autocomplete
在自动完成小部件实例化时,页面上不存在
更新示例:position对象在我的实际网站中不会是一个bug,我只是没有将所有html都包含在提琴中。但无论如何,非常感谢,我在irc的某个地方也得到了答案:D互联网是个好地方!
// getconfig
$.widget("custom.catcomplete", $.ui.autocomplete, {
_renderMenu: function(ul, items) {
var self = this,
currentCategory = "";
$.each(items, function(index, item) {
if (item.category != currentCategory) {
ul.append("<li style='clear:both'class='ui-autocomplete-category'>" + item.category + "</li>");
currentCategory = item.category;
}
self._renderItemData(ul, item);
});
}
});