jQuery UI自动完成:设置活动项目
我正在尝试使用jQuery Ui自动完成来简化HTML SELECT元素的行为。jQuery UI自动完成:设置活动项目
是否可以在打开的事件上设置活动项目(移动焦点)?基本上,我试图模仿HTML选择元素中的selected =“selected”选项 - 如果字段中的值与列表中的值匹配,则使该列表项“选中”。
好了,我终于想通了,在朋友的帮助下答案。
$('input[data-field=vat_rate]', view.el).autocomplete({
source: function (request, response) {
response(your_source_array);
},
minLength: 0,
open: function (event, ui) {
var term = ui.item.value;
if (typeof term !== 'undefined') {
$(this).data("autocomplete").menu.activate(new $.Event("mouseover"), $('li[data-id=' + term + ']'));
}
}
}).click(function() {
if ($(this).autocomplete('widget').is(':visible')) {
$(this).autocomplete('close');
} else {
$(this).autocomplete('search');
}
}).data("autocomplete")._renderItem = function (ul, item) {
var listItem = $("<li></li>")
.data("item.autocomplete", item)
.attr("data-id", item.id)
.append('<a>' + item.label + '</a>')
.appendTo(ul);
};
这里的JSBin它:http://jsbin.com/unibod/2/edit#javascript
完美的作品! :)
这里是什么you'e寻找的jsfiddle:http://jsfiddle.net/fordlover49/NUWJr/
基本上,从jQuery的网站采取了combobox example,并改变了renderItem功能。在这个例子中关jqueryui.com的站点,改变的:
input.data("autocomplete")._renderItem = function(ul, item) {
return $("<li></li>").data("item.autocomplete", item).append("<a>" + item.label + "</a>").appendTo(ul);
};
要:
input.data("autocomplete")._renderItem = function(ul, item) {
$item = $("<li></li>").data("item.autocomplete", item).append("<a>" + item.label + "</a>");
if (this.element.val() === item.value) {
$item.addClass('ui-state-hover');
}
return $item.appendTo(ul);
};
嘿,谢谢,它几乎是我想要的 - 除了当我用键盘打开列表并尝试导航时,它从列表顶部开始,而不是从“活动”列表开始。不过,我已经找到了我要在这里发布的解决方案。 – ragulka 2012-01-30 07:17:48
您可以使用the focus
event添加/删除活动类。我比这个线程上的其他._renderItem
代码更喜欢它。
[...previous autocomplete options]
focus: function(event, ui) {
// Remove the hover class from all results
$('li', ui.currentTarget).removeClass('ui-state-hover');
// Add it back in for results
$('li',ui.currentTarget).filter(function(index, element) {
// Only where the element text is the same as the response item label
return $(element).text() === ui.item.label;
}).addClass('ui-state-hover');
},
[next autocomplete options...]
多数民众赞成真棒@zack我只是腰了我的两到三个小时,因为我使用jQuery标签编辑器自动完成插件创建自定义用户界面。 – 2016-08-18 15:48:55
什么是你从这个例子里缺了:http://jqueryui.com/demos/autocomplete/#combobox – Jere 2012-01-17 12:26:29
当我从列表中选择的东西,例如Clojure的 - 这样的名单将被关闭,当我打开它再次,Clojure没有被选中,它看起来完全像其他任何项目。 – ragulka 2012-01-17 18:10:17