Javascript 如何使用jQuery自动完成
我已经看了很多很多的例子,但无法找到让autocomplete工作的方法。这是我的HTML:Javascript 如何使用jQuery自动完成,javascript,c#,jquery,autocomplete,Javascript,C#,Jquery,Autocomplete,我已经看了很多很多的例子,但无法找到让autocomplete工作的方法。这是我的HTML: <table> <tr> <td> Item Number: </td> <td> <input id="items" /> </td> <td>
<table>
<tr>
<td>
Item Number:
</td>
<td>
<input id="items" />
</td>
<td>
@Html.DisplayTextFor(x=>x.ItemDescription)
</td>
<td>
@Html.TextBoxFor(x=>x.ItemDescription, new { @id = "txtDescription" })
</td>
</tr>
</table>
正在选择正确的项目并返回到成功功能。但是没有显示下拉列表。如何显示与输入匹配的值的下拉列表?根据,响应是一个回调函数,您应该将数据传递给它。我认为你应该改变这一行:
response = $.map(...);
到
response
方法负责构建和显示下拉列表。它接受从控制器返回的数据。在您的原始代码中,您正在重写它,因此有效地处理将在该点停止,并且您看不到正在呈现的下拉列表
以下是上述链接的摘录,用于从远程数据源(comments mine)加载项目:
您的控制器操作是否标有[HttpPost]
?当你调试你的代码时,你的控制器动作会被击中吗?为什么不为#项指定输入类型
?您的页面中是否有对jQuery和jQuery UI的引用?是的,方法的命中率很高,并且正确的字符串列表返回到页面中。我只是看不到下拉结果。根据,response
是一个回调函数,您应该将数据传递给它(例如,response($.map(…)
)。正如您在上面看到的,我正在映射它,但这是做什么的?如何从中生成下拉列表?您正在将$.map
操作的结果分配给响应
,而不是将其作为参数传递给响应
(这是一个函数)。耶!成功了。谢谢
$("#items").autocomplete({
source: function (request, response) {
$.ajax({
type: 'POST',
dataType: "json",
data: {data: request.term },
url: '@Url.Action("GetAllItemNumbers")',
success: function (data) {
response = $.map(data, function (item) {
return {
value: item
};
});
}
});
},
minLength: 4
});
response = $.map(...);
response($.map(...));
$( "#city" ).autocomplete({
source: function( request, response ) {
$.ajax({
url: "http://gd.geobytes.com/AutoCompleteCity",
dataType: "jsonp",
data: {
q: request.term
},
success: function( data ) {
response( data ); // pass data INTO response, don't assign it
}
});
},
minLength: 3,
// other methods omitted
});