#javascript #jquery #jquery-ui #autocomplete
#javascript #jquery #jquery-пользовательский интерфейс #автозаполнение
Вопрос:
У меня есть страница с несколькими полями автозаполнения. Мне нужно было бы передать некоторые дополнительные данные каждого поля, к которому привязано автозаполнение (например, «data-field-id =»X»)
Автозаполнение инициализируется классом «автозаполнение». Эти поля автозаполнения генерируются динамически.
В настоящее время мой код выглядит следующим образом:
var autocompleteFields = $(".dynamic-fields.autocomplete");
// autocomplete data getter for necessary fields
if (autocompleteFields.length > 0) {
autocompleteFields.autocomplete({
source: function (request, response) {
request.module = 'shared';
request.page = 'get_autofill_data.php';
$.ajax({
url: "ajax.php",
data: request,
dataType: "json",
type: "POST",
success: function (data) {
response(data);
}
});
},
select: function (event, ui) {
$(this).val(ui.item.value);
}
});
}
Мне нужно было бы передать, например, «data-field-id» -свойство в request.x текущего используемого поля. Возможно ли это каким-либо образом? Я не смог найти четкого способа сделать это в документации..
Комментарии:
1. Правильно ли вы получаете объекты DOM в полях автозаполнения?
2. Если получено правильное значение, тогда var dataFieldId = autocompleteFields.attr(‘data-field-id’); request.x = dataFieldId; Надеюсь, это сработает.
3. Кажется, это работает, когда есть один экземпляр автозаполнения, но с двумя оба получают один и тот же идентификатор поля данных, хотя он отличается в html.
4. Если их больше единицы, то autocompleteFields представляет собой массив. Затем вам нужно выполнить итерацию.
Ответ №1:
Попробуйте это. Это будет работать.
var autocompleteFields = $(".dynamic-fields.autocomplete");
if (autocompleteFields.length > 0) {
autocompleteFields.autocomplete({
source: function (request, response) {
request.module = 'shared';
request.page = 'get_autofill_data.php';
request.x = $(this)[0].element.attr('data-field-id')
$.ajax({
url: "ajax.php",
data: request,
dataType: "json",
type: "POST",
success: function (data) {
response(data);
}
});
},
select: function (event, ui) {
$(this).val(ui.item.value);
}
});
}
Комментарии:
1. Кажется, это работает правильно! Большое вам спасибо 🙂 Я пытался получить доступ к $(this) ранее, но в нем не было ключа [0] .