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

Art*_*uro 4 jquery jquery-ui autocomplete jquery-selectors

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

因为我正在使用ajax检索的远程源,所以我试图知道请求是从哪个文本框中获取的.

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

我试过这个,因为它处理'选择'和'焦点'事件,但不是'源'.我想我正在使用它的方式我指的是'来源'

有没有人知道如何知道在这种情况下调用的事件是哪个元素?

谢谢!!

$("#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);
            }
        });
});
Run Code Online (Sandbox Code Playgroud)

rya*_*lit 5

我想你正在寻找this.element.attr("id")你的switch语句.这应该适用于找到正确的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);
            }

        });

    }

 });
Run Code Online (Sandbox Code Playgroud)