出于某种原因,jQuery UI的自动完成功能已停止为我工作。我得到了与this webpage中描述的相同的错误。
我已从下面的该网页复制了查询内容,希望此处有人能够回答。
谢谢!
我正在使用Jquery UI Autocomplete
来获取名称列表。但由于某种原因,我收到了一个错误:
$('#repName').removeAttr('readonly').focus(function () { $(this).val(''); }).autocomplete({ source: function (request, response) { tagId = $('#TagId').val(); $.ajax({ url: '/Developement/GetRepName', type: 'POST', dataType: 'json', data: { searchText: request.term, maxResults: 10, tagId: tagId }, success: function (data) { response($.map(data, function (item) { return { label: item.Name, value: item.RepId, id: item.RepId } })) } }) }, select: function (event, ui) { commissionAllicationModifications(ui.item.id, 0, 'A'); } });
我不知道为什么会这样。 我正在使用Jquery UI 1.8.1。
我很感激对此有任何帮助。
它来自jQuery UI 1.8.1文件,特别是jQuery UI Autocomplete 1.8.1。
.menu({ focus: function (event, ui) { var item = ui.item.data("item.autocomplete"); if (false !== self._trigger("focus", null, { item: item })) { // use value to match what will end up in the input, if it was a key event if (/^key/.test(event.originalEvent.type)) { self.element.val(item.value); } } }, selected: function (event, ui) { var item = ui.item.data("item.autocomplete"); if (false !== self._trigger("select", event, { item: item })) { self.element.val(item.value); } self.close(event); // only trigger when focus was lost (click on menu) var previous = self.previous; if (self.element[0] !== doc.activeElement) { self.element.focus(); self.previous = previous; } self.selectedItem = item; }, * blur: function (event, ui) { * if (self.menu.element.is(":visible")) { * self.element.val(self.term); * } * } }) .zIndex(this.element.zIndex() + 1) // workaround for jQuery bug #5781 http://dev.jquery.com/ticket/5781 .css({ top: 0, left: 0 }) .hide() .data("menu");
这很奇怪,因为这在另一个项目中完美无缺。我注意到的是当代码命中[starred]部分时,self.menu部分未定义。另一件值得注意的是,它甚至没有发送请求。我在想它可能是我的焦点功能。
.focus(function () { $(this).val('');
但事实并非如此。 谢谢你的帮助。
答案 0 :(得分:3)
事实证明,我加入了一个定义$.fn.menu
的插件,这造成了严重破坏。我将其更改为$.fn.fg_menu
,问题已解决。
答案 1 :(得分:0)
您使用的是哪个版本的jQuery核心?
我知道与visible detection相关且与IE8相关的错误。如果可能的话,你可以在测试机上升级到最新的jQuery,看看是否能解决你的问题吗?
如果你不想升级,你也可以尝试黑客jQuery(UGLY!) - with this:
if (self.menu.element.is(":visible"))
变为
if (!(self.menu.element.css('display') == 'none'))