jQuery自动完成数据未定义错误

jQuery autocomplete data undefined error

本文关键字:数据 未定义 错误 jQuery      更新时间:2023-09-26

我使用的是jquery v 2.0.0和jquery ui 1.10.3

以下是我的jquery ui自动完成代码:

$nameField.combobox({
            source: people,
            buttonSelector: '.toggleList',
            focus: function () {
                return false;
            },
            select: function (event, ui) {
                $nameField.val(ui.item.name).data({
                    id: ui.item.id,
                    name: ui.item.name,
                    birthdate: ui.item.birthdate
                });
                return false;
            }
        }).data('ui-autocomplete')._renderItem = function (ul, item) {
            if (!_.include(self.idArr, item.id)) {
                return $('<li></li>').data('ui-autocomplete-item', item).append('<a>' + item.name + '</a>').appendTo(ul);
            }
        };

这在旧版本的jquery中运行得很好。但升级后,当我单击.toggleList按钮时,它会第一次打开,还有另一个按钮可以将所选名称添加到div中。之后,当我点击".thoggleList"组合选择器时,自动完成不会打开。它给了我以下错误:

Uncaught TypeError: Cannot call method 'data' of undefined jquery.ui.autocomplete.js?1376892069:527

有人遇到过这样的问题吗?我尝试了其他stackoverflow线程中提到的几个修复程序,但没有一个对我有效

希望有人能帮我修复这个错误

感谢

我找到了解决方案

有些人认为"ui自动完成"是错误的,所以他们使用"autocomplete"或"uiAutocomplete",但这是错误的。实际上,"ui自动完成"是正确的方法。

我和你有同样的问题,我和一个朋友发现了这个代码的问题。相反:

.data('ui-autocomplete')._renderItem = function (ul, item) {
            if (!_.include(self.idArr, item.id)) {
                return $('<li></li>').data('ui-autocomplete-item', item).append('<a>' + item.name + '</a>').appendTo(ul);
            }
        };

用途:

._renderItem = function (ul, item) {
            if (!_.include(self.idArr, item.id)) {
                return $('<li></li>').data('ui-autocomplete-item', item).append('<a>' + item.name + '</a>').appendTo(ul);
            }
        };

我认为组合框和自动完成返回一个数据("I-autocomplete"),所以如果你键入.data("I-autocomplete"

.data('ui-autocomplete').data('ui-autocomplete')

怎么了。。。。好吧,实际上我不知道为什么这不起作用,为什么没有它起作用,但相信我,删除.data("I-autocomplete")并高兴!