C# jQuery自动完成隐藏的渲染结果
我试图在jQuery中使用autocomplete小部件,但是当我开始键入时,它下面什么也没有显示。我可以看出它在做些什么,因为当我键入时,我可以看到页面上的滚动条随着列表变短而改变,但我看不到结果。我的代码如下。任何帮助都将不胜感激 我的控制器方法如下所示:C# jQuery自动完成隐藏的渲染结果,c#,jquery,asp.net-mvc,C#,Jquery,Asp.net Mvc,我试图在jQuery中使用autocomplete小部件,但是当我开始键入时,它下面什么也没有显示。我可以看出它在做些什么,因为当我键入时,我可以看到页面上的滚动条随着列表变短而改变,但我看不到结果。我的代码如下。任何帮助都将不胜感激 我的控制器方法如下所示: public ActionResult GetUsers(string query) { var empName = from u in HomeModel.CombineNames()
public ActionResult GetUsers(string query)
{
var empName = from u in HomeModel.CombineNames()
where u.StartsWith(query)
select u.Distinct().ToArray();
return Json(empName);
}
<script type="text/javascript">
$(document).ready(function() {
$("input#autocomplete").autocomplete({
source: function(request, response) {
$.ajax({
url: '/Home/GetUsers',
type: "POST",
dataType: "json",
data: { query: request.term },
success: function(data) {
response($.map(data, function(item) {
return { label: item, value: item };
}));
}
});
}
});
})
</script>
<input type="text" id = "autocomplete"/>
我的观点是这样的:
public ActionResult GetUsers(string query)
{
var empName = from u in HomeModel.CombineNames()
where u.StartsWith(query)
select u.Distinct().ToArray();
return Json(empName);
}
<script type="text/javascript">
$(document).ready(function() {
$("input#autocomplete").autocomplete({
source: function(request, response) {
$.ajax({
url: '/Home/GetUsers',
type: "POST",
dataType: "json",
data: { query: request.term },
success: function(data) {
response($.map(data, function(item) {
return { label: item, value: item };
}));
}
});
}
});
})
</script>
<input type="text" id = "autocomplete"/>
尝试使用浏览器的检查工具检查滚动条正在更改的区域。如果元素存在,您可能需要对CSS进行一些更改,以使文本颜色与背景颜色不同或出现其他与显示相关的问题。您缺少一些内容,例如渲染项、缓存管理 代码应该是这样的:假设您的操作返回一个字符串数组
var cache = {},lastXhr;
$( "input#autocomplete" ).autocomplete({
minLength: 4,
source: function (request, response) {
var term = request.term;
if (term in cache) {
response(cache[term]);
return;
}
var descripcion = new Array();
peticion = $.getJSON('/Home/GetUsers',{ query: request.term }, function (data, status, xhr) {
for (d in data) {
descripcion.push(data[d]);
}
cache[term] = descripcion;
if (xhr === peticion) {
response(descripcion);
}
});
},
select: function( event, ui ) {
$("input#autocomplete" ).val( ui.item);
return false;
}
})
.data( "autocomplete" )._renderItem = function( ul, item ) {
return $( "<li></li>" )
.data( "item.autocomplete", item )
.append( "<a>" + item + " </a>" )
.appendTo( ul );
};
我从页面中删除了CSS以进行检查,但仍然存在相同的问题。谢谢您的帮助。当我尝试实现它时,它说_renderItem为null或未定义。您使用的是哪个版本的jquery和jquery ui?jquery 1.7.1和jquery ui 1.8.20I与jquery 1.4有相同的错误,在更新到1.8时得到解决