【问题标题】:jQuery autocomplete data undefined errorjQuery自动完成数据未定义错误
【发布时间】:2013-08-21 06:04: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中。之后,当我单击“.toggleList”组合选择器时,自动完成功能没有打开。它给了我以下错误:

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

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

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

谢谢

【问题讨论】:

  • 我也遇到了同样的问题,你找到解决办法了吗?
  • 人们告诉尝试使用 uiAutocomplete 或 autocomplete 代替“ui-autocomplete”,但到目前为止我知道,“ui-autocomplete”是正确的。

标签: javascript jquery jquery-ui jquery-ui-autocomplete


【解决方案1】:

我找到了解决办法!

有些人认为“ui-autocomplete”是错误的,所以他们使用“autocomplete”或“uiAutocomplete”,但这是错误的。实际上,“ui-autocomplete”是做到这一点的正确方法。

我遇到了同样的问题,我和朋友一起发现了这段代码的问题。而是:

.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);
            }
        };

我认为组合框和自动完成返回一个数据('ui-autocomplete'),所以如果你输入 .data('ui-autocomplete') 你正在做类似的事情:

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

怎么了....好吧,实际上我不知道为什么这不起作用以及为什么没有它起作用,但相信我,删除 .data('ui-autocomplete') 并开心!

【讨论】:

  • 非常感谢您的解决方案。出于某种原因,它似乎工作:)
  • 哈哈哈,是的,我不知道这为什么有效,但知道有效是一种解脱。 :)
猜你喜欢
  • 1970-01-01
  • 2017-05-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多