jQuery autocomplete - передать атрибут целевого элемента в качестве дополнительного параметра?

Я использую плагин 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» не оценивается в этой части кода, но я не могу понять, как еще я могу ссылаться на целевой элемент. Любая помощь приветствуется!

1
задан Phil 27 August 2010 в 12:16
поделиться

1 ответ

$('#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.

2
ответ дан 2 September 2019 в 21:46
поделиться
Другие вопросы по тегам:

Похожие вопросы: