我正在使用jQuery Autocomplete和MVC来填充带有一堆列名的下拉列表。
每当用户在我的表单上更改DropDownBox的值时,我向我的控制器发出请求,以返回一个新的列列表(作为一个数组,包含在JSON结果中),该列表将填充我的自动完成框。
我的问题是自动完成不区分单词,而是坚持用c,h,a,r,a,c,t,e,r来表示它。这很烦人。这是代码:
function PopulateColumnsList(list) {
$(".columnDropdown").setOptions({ data: list });
}
$(document).ready(function() {
$(".columnDropdown").autocomplete("", {
width: 320,
max: 14,
highlight: false,
minChars: 0,
scroll: true,
scrollHeight: 300
});
$("#Data").change(function() {
$.ajax({
url: "/Home/ColumnNamesForDataSelect",
type: "GET",
data: { DataSelectID: parseInt($('#Data').val()) },
success: PopulateColumnsList
});
});
});
获取返回此响应:
[ “备忘录”, “平衡”]
Butmy AutoComplete会将每个字母显示为单个字母而不是两个字:Memo,Balance。我认为这是正确的,因为示例代码显示了返回结果的类似方法。
有什么想法吗?
先谢谢。
答案 0 :(得分:1)
您可以展示您想要的示例吗?我不是百分之百。
我的自动填充只是用户开始在文本框中输入,它会查看正在键入的字母并返回带有该结果的可能单词。
我这样做是这样的:
// JavaScript file
$("#id").autocomplete("AutoFill", { delay: 1 });
// view
public ContentResult AutoFill(string q)
{
var result = // go to database and grab all words that Start with whatever is in q.
string sendBack = null;
for (int i = 0; i < result.Count; i++)
{
sendBack += result[i] + Environment.NewLine;
}
return Content(sendBack);
}
不确定这对你有帮助吗?
答案 1 :(得分:1)
我意识到这可能是疯狂的谈话,也不是一个很好的答案,但是因为它似乎是在迭代响应的每个下标中的项目,你是否尝试将你的响应包装在另一个数组中,如{{1 }}?
答案 2 :(得分:0)
好吧,你绑定到onChange()事件,这将是逐个字母。我碰到了类似的东西,想要整个价值。我通过覆盖parse()函数并指定我的XML解析器/格式来处理这个问题,然后我覆盖了result()函数来解析我在parse()函数中设置的row []数据。
How do you use POST with jQuery Autocompleter?
所以基本上,我总是从选择中选择带有数据和名称的row [](你也可以做JSON)。
并且,您还需要覆盖formatItem()函数来处理新的row []数组。
答案 3 :(得分:0)
有几个jQuery自动完成程序。如果你想提到你正在使用哪一个,这将有所帮助。例如,http://docs.jquery.com/Plugins/Autocomplete/setOptions看起来不像您正在使用的setOptions?