我是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" />
答案 0 :(得分:2)
您没有显示您的ajax请求返回的数据,但是根据您的formatSelection
函数和您遇到的行为来判断,我猜测数据是一个字符串数组。它应该是一个对象数组,其中每个对象都有id
属性和text
属性。
此jsfiddle显示问题。
尝试将ajax results
功能更改为:
results: function(data) {
return { results: $.map(data, function(state) {
return { id: state, text: state }
}) };
}
您还必须删除formatResult
功能。
答案 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());
}
}