jquery autocomplete显示输出字符串

时间:2011-10-21 19:12:33

标签: javascript jquery autocomplete jquery-ui-autocomplete jquery-callback

我想让脚本在逗号分隔集的字符串中显示值列表中的每个项目。

离。 “一个,两个,三个,四个”

在自动完成下拉列表中,它应显示:

一个 二 三 4

但是,当前代码显示只有单个char的列表。应该有一种简单的方法来分割该列表并显示单词而不是char。我的javascript有点受限,如果有人可以为我解决,我会很感激。谢谢。我一直在搜索并知道你应该能够覆盖解析函数,但它必须比这更容易。此外,我使用Web服务返回字符串,可以由任何东西分隔,但它需要显示单词。

如果有人知道答案,我会很感激...谢谢

       $("#CustomerID").autocomplete({
            source: function(request, response) {
               $.ajax({
                type: "POST",
                url: "/customer/search.asmx/findvalue",
                dataType: "json",
                data: {
                    term: request.term
                },
                error: function(xhr, textStatus, errorThrown) {
                    alert('Error: ' + xhr.responseText);
                    },
                success: function(data) {
                    response($.map(data, function(item) {
                        return {
                            label: item,
                            value: item
                        }
                    }));
                }
            });
        },
        minLength: 2,
        select: function(event, ui) {
            alert('Select');
        }
    });

EDIT ----------------------

感谢上一张海报寻求帮助。

似乎是格式化的细微差别。

这有效:

success: function (data) {
    response($.map(data, function (item) {
        return item.split(",");
    }));   
},

使用它似乎只是出错或什么都不做:

        success: function(data) {
            response(data.split(","));
        }

我甚至尝试了这一点,它会通过,但不会产生下拉菜单:

success: function (data) {
    response($.map(data, function (item) {
        response(item.split(","));
    }));   
},

以上似乎工作并显示我想要的东西,不确定它是否有效。如果有人想解释原因?不知道为什么在某些情况下你需要一个响应()和/或返回以使自动完成工作....

1 个答案:

答案 0 :(得分:1)

尝试使用.split()将字符串拆分为字符串数组(需要一个数组作为自动完成小部件的源代码)。

$("#CustomerID").autocomplete({
    source: function(request, response) {
       $.ajax({
            type: "POST",
            url: "/customer/search.asmx/findvalue",
            dataType: "json",
            data: {
                term: request.term
            },
            error: function(xhr, textStatus, errorThrown) {
                alert('Error: ' + xhr.responseText);
                },
            success: function(data) {
                response(data.split(","));
            }
        });
    },
    minLength: 2,
    select: function(event, ui) {
        alert('Select');
    }
});