jQuery自动完成问题 - 没有正确处理数组

时间:2009-10-22 15:44:48

标签: javascript jquery asp.net-mvc autocomplete jquery-autocomplete

我正在使用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。我认为这是正确的,因为示例代码显示了返回结果的类似方法。

有什么想法吗?

先谢谢。

4 个答案:

答案 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?