Автозаполнение jQuery: выберите идентификатор из события «источник» - PullRequest
4 голосов
/ 01 сентября 2010

Я пытаюсь применить автозаполнение пользовательского интерфейса jQuery к трем полям ввода одновременно, поскольку запрос и логика почти одинаковы, между ними изменяется только один параметр.

Поскольку я использую удаленныйисточник, который извлекается с помощью ajax. Я пытаюсь узнать, из какого текстового поля был сделан запрос.

Как вы можете видеть в операторе 'switch' при событии 'source', которое я пробовал $ (this) .attr ("id"), но это не работает, возвращает «неопределенное»

Я пробовал это, потому что он работал с событиями «select» и «focus», но не с «source»,Я предполагаю, что, используя его, я указываю на «источник»

Кто-нибудь знает способ узнать, из какого элемента было вызвано событие в этом случае?

Спасибо!!

$("#campo-categorias, #campo-tipos, #campo-colonias").autocomplete({
    minLength: 1,       
    delay: 100,
    source: function(request, response){
        var solicitud = new Object;

        switch ($(this).attr("id")){
            case "campo-categorias":
                solicitud.action    = 'get_categorias'; 
                break;
            case "campo-tipos":
                solicitud.action    = 'get_tipos_comida';   
                break;
            case "campo-colonias":
                solicitud.action    = 'get_colonias';   
                break;
        }           

        solicitud.consulta  = request.term;                     
        $.ajax({
            url: "wp-admin/admin-ajax.php",
            dataType: "json",
            data: solicitud,
            type: "POST",
            success: function(data){                                        
                response(data);
            }
        });
});

1 Ответ

5 голосов
/ 01 сентября 2010

Я думаю, что вы ищете this.element.attr("id") в вашем заявлении о переключении.Это должно работать для поиска правильного идентификатора.

Кроме того, в вашем коде отсутствует фигурная скобка, она должна выглядеть следующим образом:

 $("#campo-categorias, #campo-tipos, #campo-colonias").autocomplete({
    minLength: 1,       
    delay: 100,
    source: function(request, response){

        var solicitud = new Object;

        switch (this.element.attr("id")){

            case "campo-categorias":
                solicitud.action    = 'get_categorias'; 
                break;
            case "campo-tipos":
                solicitud.action    = 'get_tipos_comida';   
                break;
            case "campo-colonias":
                solicitud.action    = 'get_colonias';   
                break;
        }           

        solicitud.consulta  = request.term;       
        $.ajax({

            url: "wp-admin/admin-ajax.php",
            dataType: "json",
            data: solicitud,
            type: "POST",
            success: function(data){                                        
                response(data);
            }

        });

    }

 });
...