Kendo AutoComplete Jquery Плагин Ошибка
Мой HTML
<input type="text" id="id-5505Name" name="id-5505Name" value=" " class="autocomplete"/>
<input type="text" id="id-2333Name" name="id-2333Name" value=" " class="autocomplete"/>
<input type="text" id="id-2323Name" name="id-2323Name" value=" " class="autocomplete"/>
<input type="text" id="id-2322Name" name="id-2322Name" value=" " class="autocomplete"/>
Мой скрипт JQuery
$(".autocomplete").kendoAutoComplete({
minLength: 2, ignoreCase: true, placeholder: "Start typing...",
filter: 'contains', suggest: true,
dataTextField: "name",
dataValueField: 'id',
dataSource: {
type: "json",
serverFiltering: true,
transport: {
read: "PatientFileUpload/loaddrugname", parameterMap: function () {
return {
startsWith: $(this).data("kendoAutoComplete").value()
};
},
success: function (response) {
o.success(response);
}
}
}, select: function (e) {
var item = e.item;
var DataItem = this.dataItem(e.item.index());
alert('Name : ' + DataItem.name + ', Id : ' + DataItem.id);
}
});
Моя проблема:
В предыдущем коде я не могу получить доступ к объекту $(this) в функции parameterMap, поэтому мне нужно получить доступ к текущему объекту, и я не могу изменить селектор JQuery ('.autocompelete'), и я не могу использовать Id селектор... Есть идеи
2 ответа
Решение
Используйте закрытие:
$(".autocomplete").each(function() {
var that = this;
$(this).kendoAutoComplete({
minLength: 2,
ignoreCase: true,
placeholder: "Start typing...",
filter: 'contains',
suggest: true,
dataTextField: "name",
dataValueField: 'id',
dataSource: {
type: "json",
serverFiltering: true,
transport: {
read: "PatientFileUpload/loaddrugname",
parameterMap: function () {
return {
startsWith: $(that).data("kendoAutoComplete").value()
};
},
success: function (response) {
o.success(response);
}
}
},
select: function (e) {
var item = e.item;
var DataItem = this.dataItem(e.item.index());
alert('Name : ' + DataItem.name + ', Id : ' + DataItem.id);
}
});
});
Попробуйте изменить:
var DataItem = $(this).dataItem(e.item.index());
чтобы:
var DataItem = this.dataItem(e.item.index());