Автозаполнение jQuery, передача данных — свойство автозаполнения поля находится в

#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] .