【问题标题】:jQuery Autocomplete Problem - Not treating Arrays correctlyjQuery 自动完成问题 - 未正确处理数组
【发布时间】:2013-07-30 22:18:26
【问题描述】:

我正在使用 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
       });
  });

});

Get 返回此响应:

[“备忘录”,“余额”]

Butmy AutoComplete 会将这些中的每一个显示为单个字母而不是两个:备忘录、余额。我认为这是正确的,因为示例代码显示了类似的返回结果的方式。

有什么想法吗?

提前致谢。

【问题讨论】:

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


    【解决方案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);
    }
    

    不确定这是否对您有帮助。

    【讨论】:

      【解决方案2】:

      我意识到这可能是一个疯狂的话题,也不是一个很好的答案,但由于它似乎在迭代响应的每个下标中的项目,您是否尝试将您的响应包装在另一个数组中,例如 [["Memo","Balance"]] ?

      【讨论】:

      • 现在只显示整个结果。奇怪!
      【解决方案3】:

      好吧,您正在绑定到 onChange() 事件,这将是一个字母一个字母。我遇到了类似的事情,并想要整个价值。我通过重写 parse() 函数并指定我的 XML 解析器/格式来处理这个问题,然后我重写了 result() 函数来解析我在 parse() 函数中设置的 row[] 数据。

      How do you use POST with jQuery Autocompleter?

      所以基本上,我总是从选择中获得带有数据和名称的 row[](你也可以使用 JSON)。

      而且,您还需要重写 formatItem() 函数来处理新的 row[] 数组。

      【讨论】:

      • 改变的是 DropDownBox。
      【解决方案4】:

      那里有几个 jQuery 自动完成器。如果您提及您使用的是哪一个,这将有所帮助。例如,看起来http://docs.jquery.com/Plugins/Autocomplete/setOptions 不是您正在使用的 setOptions?

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2010-12-04
        • 2011-08-08
        • 2013-01-22
        • 2016-05-31
        • 2011-10-08
        • 2013-11-11
        • 2011-11-16
        相关资源
        最近更新 更多