0

我正在使用 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 会将这些中的每一个显示为单个字母,而不是两个:备忘录、余额。我认为这是正确的,因为示例代码显示了返回结果的类似方式。

有任何想法吗?

提前致谢。

4

4 回答 4

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);
}

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

于 2009-10-22T23:02:37.723 回答
1

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

于 2009-10-22T23:41:44.040 回答
0

Well, you are binding to the onChange() event, which would be letter by letter. I ran into something similar, and wanted the entire value. I handled this by overriding the parse() function and specifying my XML parser/format, then I overided the result() function to parse the row[] data that I set back in the parse() function.

How do you use POST with jQuery Autocompleter?

So basically, I always have row[] with Data and Name from the selection (u can do JSON too).

And, you will also need to override the formatItem() function to handle your new row[] array.

于 2009-10-22T15:52:37.043 回答
0

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

于 2009-12-23T06:30:22.350 回答