Я использую jQuery виджет автозаполнения и пытаюсь использовать его для нескольких элементов на одной странице и динамически извлекать их индивидуальные атрибуты, вместо того, чтобы делать отдельный уникальный вызов для каждого поля поиска. Каждое окно поиска имеет класс autocomplete-search
и некоторые атрибуты data
, характерные для его варианта использования.
Например:
<input type = "text" name = "brand" id = "brand" class = "autocomplete-search" data-search-url = "/api/v1/search">
<input type = "text" name = "product" id = "product" class = "autocomplete-search" data-search-url = "/api/v1/search">
$('.autocomplete-search').autocomplete({
source: $(this).data("search-url"),
});
Однако это не работает с TypeError: this.source is not a function. (In 'this.source( { term: value }, this._response() )', 'this.source' is null)
. Я понимаю, что этот вопрос похож на Доступ к элементу $ (this) DOM из вызова Ajax виджета автозаполнения jQuery, но принятый ответ здесь не работает. this.element
также отвечает с той же ошибкой.
Я не могу найти ответ на этот вопрос после прочтения документов автозаполнения. Любая помощь будет оценена по достоинству.
@Zenoo элемент, на котором был вызван autocomplete
; так что конкретное поле поиска. Я только что обновил вопрос, включив разметку двух примеров входных данных.
Вы вызываете виджет autocomplete
для нескольких элементов.
Насколько мне известно, вы не можете указать виджету выбирать динамический источник для каждого элемента.
Другой способ - перебрать ваши элементы и вызвать autocomplete
внутри этого цикла с помощью функции jQuery .each()
:
$('.autocomplete-search').each(function(){
$(this).autocomplete({
source: $(this).data("search-url")
});
});
В этом есть смысл. Дай мне попробовать.
Крутой мужик. Кажется, это сработало! Ценить это.
Нет проблем, рад помочь.
Что должен представлять
this
в вашем случае?