JQuery UI AutoComplete:.data(..) 未定义 [但仅当我添加第二个自动完成框时]
JQuery UI AutoComplete: .data(...) is undefined [but only when I am add a second autocomplete box]
我正在使用JQuery 1.8.3和JQuery UI 1.8.24。
这是代码,工作得很好:
$(function () {
$("#").autocomplete({
source: function (request, response) {
$.ajax({
url: '', type: "POST", dataType: "json",
data: { searchPattern: request.term },
cache: false,
success: function (data) {
response($.map(data, function (item) {
return { label: item.Label, value: item.Value, id: item.Id, description: item.Description }
}))
}
});
},
delay: 300,
minLength: 2,
autoFocus: true
})
.data("autocomplete")._renderItem = function (ul, item) {
return $("li>/li>")
.data("ui-autocomplete-item", item)
.append("a>" + item.label + "br>div style='"font-size:x-small;font-style:italic;'">" + item.description + "/div>/a>")
.appendTo(ul);
};
});
但是,如果我在 HTML 中添加第二个文本框,复制上面的 JavaScript 并更改选择器和 url(所以最后我有两个自动完成文本框),那么第二个自动完成会出现以下错误:
TypeError: $(...).autocomplete(...).data(...) is undefined
使用一个自动完成功能,它可以完美运行,但第二个则不然我无法解释为什么。有人可以帮助我吗?
提前感谢!
托比
编辑:
我发现了问题。
JavaScript 代码位于 *.js 文件中,两个文本框位于两个不同的 *.thml 文件中。
所以一次只有一个文本框,这就是问题所在。
现在我在 *.html 文件中做最后一部分(使用 data(...)),它工作正常:
$("#selector").autocomplete().data("autocomplete")._renderItem = renderItem;
感谢您的帮助!
UI 1.9 中的数据键命名约定发生了变化
jQuery 1.9/1.10 删除了密钥autocomplete
并添加了uiAutocomplete
.data("uiAutocomplete")
请注意:根据最新的文档(v1.10.x),它应该是.data("ui-autocomplete") (见:http://jqueryui.com/autocomplete/#custom-data)
前几天,我遇到了同样的问题,但它与我使用的版本无关,而只是因为 aucomplete ed 的元素不存在!尝试
alert($('...').length);
并确保它不为零。
你可以实现下面提到的行
.autocomplete( "instance" )._renderItem = function( ul, item ) {
状态
.data("autocomplete")._renderItem = function (ul, item) {
根据Jquery站点JQuery自动完成功能上提供的文档,您将找到此代码。
从JQuery 1.10的升级版本开始,他们对代码进行了更改。希望这对你有帮助。
- 添加第二个参数时,Javascript函数将停止工作
- 第二个输入标签-如何添加
- 如何使用目录中的文件url在javascript中添加第二个类
- 将第二个背景图像添加到元素中
- 从一个页面调用 javascript 函数以在第二个页面上添加元素
- jQuery - 添加第二个变量以选择选项字段
- JQuery UI AutoComplete:.data(..) 未定义 [但仅当我添加第二个自动完成框时]
- 为什么我添加的第二个jQuery代码部分/新的CSS部分导致第一个jQuery代码在我的页面上不起作用
- 可调整大小是添加第二个包装器,而不是更改第一个包装器的大小
- 遍历两个列表,从第一个列表中获取值,将它们添加到第二个列表中
- 在 .NET Web 应用程序中添加第二个 endRequestHandler
- 我可以't在javascript中添加两个变量.如果我更改要添加的变量的顺序,它要么忽略第二个变量,要么连接
- Bootstrap模态会在第二个打开模态时自动添加一个边距
- 遍历递归结构并将数据添加到倒数第二个节点
- 在Jquery循环幻灯片中添加第二个寻呼机
- 防止iFrame在添加第二个iFrame时刷新
- 在同一对象上添加第二个动画将删除css属性
- 可以't使用jquery在第二个图像后添加一些内容
- 在AngularJS中添加第二个过滤器,而第一个过滤器没有中断
- 可以't在addEventListener方法的第二个参数中添加括号