jQuery自动完成:从'source'事件中选择Id

时间:2010-09-01 16:00:08

标签: jquery jquery-ui autocomplete jquery-selectors

我正在尝试将jQuery UI自动完成同时应用于三个输入框,因为请求和逻辑几乎相同,只有一个参数在它们之间发生变化。

由于我使用的是使用ajax检索的远程源,因此我试图了解请求的文本框。

正如您在'source'事件的'switch'语句中所看到的,我尝试了$(this).attr(“id”)但这不起作用,它返回'indefined'

我试过这个,因为它处理'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 个答案:

答案 0 :(得分:5)

我认为您在switch语句中寻找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);
            }

        });

    }

 });