无法使用jQuery .select2选择项目

时间:2014-12-10 10:23:31

标签: javascript jquery html

我是jQuery和Javascript的新手所以也许有人可以帮助我吗? 我使用.select2来获得此结果,但我无法选择和项目。 这是代码

JAVASCRIPT

 $("#namesCombobox").select2({
        placeholder: "Search for a name",
        minimumInputLength: 3,
        ajax: {
            url: "/api/machineparkcustomers/getnamescontaining",
            dataType: 'json',
            quietMillis: 250,
            data: function (term, page) {
                return {
                    query: term,
                };
            },
            results: function (data, page) {
                return {
                    results: data
                };
            },
            cache: true
        },
        formatResult: function (state) {
            return state;
        }



    });

HTML:

<input type="text" id="namesCombobox" class="col-sm-12" />

2 个答案:

答案 0 :(得分:2)

您没有显示您的ajax请求返回的数据,但是根据您的formatSelection函数和您遇到的行为来判断,我猜测数据是一个字符串数组。它应该是一个对象数组,其中每个对象都有id属性和text属性。

jsfiddle显示问题。

尝试将ajax results功能更改为:

results: function(data) {
    return { results: $.map(data, function(state) {
        return { id: state, text: state }
    }) };
}

您还必须删除formatResult功能。

jsfiddle

答案 1 :(得分:0)

在寻找类似问题的解决方案时发现这个问题接受的答案很好,但不是我的问题。

Select2提供了一个回调“id”函数,它将调用该函数来确定您要为数据中的每个结果使用的ID。对于我的情况,我的“id”功能不正确。

    this.el.select2({
        minimumInputLength: 12,
        query: this.search.bind(self),
        id: function (clinicianDto) { return clinicianDto.id(); },
        formatResult: function (clinicianDto: any) {                
            return "<div class='row'><div class='col-sm-12' >" + clinicianDto.firstName() + ' ' + clinicianDto.lastName() + "</div></div>";                
        },
        formatSelection: function (clinicianDto: any) {
            return clinicianDto.firstName() + ' ' + clinicianDto.lastName();
        },
        initSelection: function (element, callback) {
            if (self.selectedClinician) {
                callback(self.selectedClinician.SerializeModel());
            }
        }