JQuery AutoComplete不显示

时间:2011-12-21 07:40:38

标签: javascript jquery json jquery-ui

我已经使用JQuery UI自动完成功能来减少我必须在下拉列表中显示的部件列表,我也使用json来传回部件列表但我没有看到结果,我确定这与我对JQuery的Map函数的有限理解有关。

我有以下json

{"parts":[{"partNumber":"654356"},{"partNumber":"654348"},{"partNumber":"654355-6"},{"partNumber":"654355"},{"partNumber":"654357"},{"partNumber":"654357-6"},{"partNumber":"654348-6"}]}

其中JSONLint验证正确无误

我已经查看了使用Firebug的帖子和响应并看到它们是正确的但是我的自动完成似乎没有显示,我最接近这样做,当我显示整个JSON字符串时每个字符都有一条新线。

这是我的JS

$('.partsTextBox').autocomplete({
    minLength: 3,
    source: function(request, response) {
        $.ajax({
            url: './PartSearch.ashx',
            data: $('.partsTextBox').serialize(),
            datatype: 'JSON',
            type: 'POST',
            success: function(data) {
                response($.map(data, function(item) {
                    return { label: item.partNumber }
                }))
            }
        });
    },

    select: function(e) {
        ptb.value = e;
    }
});

任何人都可以给予任何帮助将非常感激。已编辑以包含soderslatt提供的帮助

3 个答案:

答案 0 :(得分:1)

我不确定,但是part.part不应该是一个数组吗?

http://jsfiddle.net/jfTVL/3/

答案 1 :(得分:1)

来自jQuery autocomplete page

  

本地数据可以是一个简单的字符串数组,也可以包含数组中每个项目的对象,带有标签或值属性或两者。 label属性显示在建议菜单中。用户从菜单中选择了某些内容后,该值将插入到input元素中。如果仅指定了一个属性,则它将用于两者,例如。如果仅提供value-properties,则该值也将用作标签。

这意味着如果你使用“value”而不是“partNumber”,你应该得到你想要的。

答案 2 :(得分:0)

jquery自动完成插件格式必须

{ “查询”: “your_query”, “建议”:[ “suggestions_1”, “suggestions_2”], “数据”:[your_data]}}

并使用

自动填充功能
$('#your_input').autocomplete({
    minChars: 2
    , serviceUrl: './PartSearch.ashx'
    , deferRequestBy: 50
    , noCache: true
    , params: { }
    , onSelect: function(value, data) {

    }
    , ajaxCallBack: function() {
            response($.map(data, function(item) {
                return { label: item.partNumber}
            }))
    }
});