Я использую плагин jQuery UI Autocomplete для выполнения вызова ajax и восстановить данные. Помимо передачи текста элемента ввода, я пытаюсь передать атрибут 'id' элемента ввода в качестве дополнительного параметра. Извлечение моего кода выглядит следующим образом -
$("#autocomplete input").autocomplete({
source: function(request, response) {
$.ajax({
url: "search.php",
dataType: "json",
data: {
term: extractLast(request.term),
extra_param: $(this).attr('id')
},
success: function(data) {
response($.map(data, function(item) {
return {
label: item.label,
value: item.name
}
}))
}
})
},
});
Дополнительный параметр добавляется в свойство data в вызове ajax. Это работает нормально, если я специально передаю значение, например, «3», но я хочу передать атрибут «id» входного элемента, для которого вызывается функция, например, $ (this) .attr ('id').
Я предполагаю, что проблема в том, что «this» не оценивается в этой части кода, но я не могу понять, как еще я могу ссылаться на целевой элемент. Любая помощь приветствуется!
$('#autocomplete input').each(e, function() {
$(e).autocomplete('/path?param=' + $(e).attr('id'), function() { ... });
});
$('#autocomplete input').each(e, function() {
$(e).autocomplete({ source:function ... extra_param: $(e).attr('id') ... });
});
Возможно, есть более элегантный способ, но я знаю, что автозаполнение несколько сложно. Я лично генерирую запрос с параметрами получения и использую formatItem/formatResult вместо того, чтобы назначать источник вызову ajax.