2

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

前任。“一二三四”

在自动完成下拉菜单中,它应该显示:

一二三四

但是,当前代码中,仅显示单个字符的列表。应该有一种简单的方法来拆分该列表并显示单词而不是字符。我的javascript有点有限,如果有人能帮我弄清楚,我将不胜感激。谢谢。我一直在搜索并知道您应该能够覆盖 parse 函数,但它必须比这更容易。此外,我正在使用 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');
        }
    });

编辑 - - - - - - - - - - -

感谢之前的发帖人帮忙解答。

这似乎是格式或其他东西的细微差别。

这有效:

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(","));
    }));   
},

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

4

1 回答 1

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');
    }
});
于 2011-10-21T19:25:14.270 回答