单击/设置 _renderItem 时获取 ui.item undefined
Click / getting ui.item undefined when _renderItem set
我正在使用 jquery 自动完成进行编码,我的目的只是用 ( [Image] [Name] ) 显示自定义视图。 When I just use autocomplete code with standard renderItem (without set up it) autocomplete works perfectly but without image I want to show however when I set _renderItem it shows items perfectly but when selecting / focusing it I got ui.item is undefined.请你帮助我好吗?这是我的代码:
使用 Jquery-ui 1.11.2 和 Jquery 1.10.2:
$("#iSearch").autocomplete({
source: function (request, response) {
var psField = "produtoNome";
$.ajax({
url: "/Search/PesquisaParcial",
data: "{'psField':'" + psField + "', 'psTerm':'" + request.term + "'}",
dataType: "json",
type: "POST",
contentType: "application/json; charset=utf-8",
success: function (data) {
//{ label: item.ProdutoFoto, value: item.ProdutoNome }
response($.map(data, function (item) {
return { label: item.ProdutoFoto, value: item.ProdutoNome, data: item };
}));
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
alert(textStatus);
}
});
},
focus: function (event, ui) {
$("#iSearch").val(ui.item.value);
return false;
},
select: function (event, ui) {
$("#iSearch").val(ui.item.value);
return false;
},
minLength: 2
}).autocomplete("instance")._renderItem = function (ul, item) {
var produtoFoto = item.data.ProdutoFoto == null ? "../Images/semfoto.png" : "../Images/" + item.data.ProdutoFoto;
var FotoHtml = "<img src='" + produtoFoto + "' width='35' height='30' />";
return $("<li>")
.append("<a>" + FotoHtml + " " + item.value + "</a>")
.appendTo(ul);
};
我发现问题了!!!
好吧,我会 post 在这里,因为它可以帮助遇到同样问题的其他人。我为解决此问题所做的工作:
- 通过 nuget 安装 jquery 1.11.2 和 jquery-ui 1.11.2
- 我在 index.cshtml 代码中对 jss 和 css 做了一些直接 link 然后我从那里删除了它们
在 BundleConfig.cs 中,我刚刚插入了对 jquery-ui 的引用:
bundles.Add(new ScriptBundle("~/bundles/jqueryui").Include(
"~/Scripts/jquery-ui-{version}.js"));
- 将 javascript 自动完成代码放入 Index.cshtml 脚本部分,如下所示:
@section 脚本{
...Javascript 自动完成代码...
}
- 自动完成工作愉快!
我正在使用 jquery 自动完成进行编码,我的目的只是用 ( [Image] [Name] ) 显示自定义视图。 When I just use autocomplete code with standard renderItem (without set up it) autocomplete works perfectly but without image I want to show however when I set _renderItem it shows items perfectly but when selecting / focusing it I got ui.item is undefined.请你帮助我好吗?这是我的代码:
使用 Jquery-ui 1.11.2 和 Jquery 1.10.2:
$("#iSearch").autocomplete({
source: function (request, response) {
var psField = "produtoNome";
$.ajax({
url: "/Search/PesquisaParcial",
data: "{'psField':'" + psField + "', 'psTerm':'" + request.term + "'}",
dataType: "json",
type: "POST",
contentType: "application/json; charset=utf-8",
success: function (data) {
//{ label: item.ProdutoFoto, value: item.ProdutoNome }
response($.map(data, function (item) {
return { label: item.ProdutoFoto, value: item.ProdutoNome, data: item };
}));
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
alert(textStatus);
}
});
},
focus: function (event, ui) {
$("#iSearch").val(ui.item.value);
return false;
},
select: function (event, ui) {
$("#iSearch").val(ui.item.value);
return false;
},
minLength: 2
}).autocomplete("instance")._renderItem = function (ul, item) {
var produtoFoto = item.data.ProdutoFoto == null ? "../Images/semfoto.png" : "../Images/" + item.data.ProdutoFoto;
var FotoHtml = "<img src='" + produtoFoto + "' width='35' height='30' />";
return $("<li>")
.append("<a>" + FotoHtml + " " + item.value + "</a>")
.appendTo(ul);
};
我发现问题了!!!
好吧,我会 post 在这里,因为它可以帮助遇到同样问题的其他人。我为解决此问题所做的工作:
- 通过 nuget 安装 jquery 1.11.2 和 jquery-ui 1.11.2
- 我在 index.cshtml 代码中对 jss 和 css 做了一些直接 link 然后我从那里删除了它们
在 BundleConfig.cs 中,我刚刚插入了对 jquery-ui 的引用:
bundles.Add(new ScriptBundle("~/bundles/jqueryui").Include( "~/Scripts/jquery-ui-{version}.js"));
- 将 javascript 自动完成代码放入 Index.cshtml 脚本部分,如下所示:
@section 脚本{ ...Javascript 自动完成代码... }
- 自动完成工作愉快!