【问题标题】:jQuery autocomplete: select Id from 'source' eventjQuery 自动完成:从“源”事件中选择 Id
【发布时间】:2011-04-06 21:42:07
【问题描述】:

我正在尝试同时对三个输入框应用 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);
            }
        });
});

【问题讨论】:

    标签: jquery jquery-ui autocomplete jquery-selectors


    【解决方案1】:

    我认为您在 switch 语句中寻找this.element.attr("id")。这应该可以找到正确的 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);
                }
    
            });
    
        }
    
     });
    

    【讨论】:

    • 我想我从 IDE 复制时错过了大括号,但我在源代码上没有该错误。会试试的!
    猜你喜欢
    • 2011-12-05
    • 2014-11-19
    • 2012-09-25
    • 2017-02-16
    • 1970-01-01
    • 2018-10-11
    • 2011-06-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多