2010-09-01 105 views
4

我试图将jQuery UI自动完成应用于三个输入框,因为请求和逻辑几乎相同,只有一个参数在它们之间发生变化。jQuery自动完成:从'源'事件选择ID

由于我正在使用正在与Ajax检索的远程源我试图能够知道从哪个文本框请求。

正如你可以在“源”事件中,我尝试$(本).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); 
      } 
     }); 
}); 

回答

5

我认为您在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); 
      } 

     }); 

    } 

}); 
+0

我想我错过了花括号当我从IDE复制,但我没有在源上的错误。将尝试! – Arturo 2010-09-02 22:57:11

+0

谢谢!它工作:) – Arturo 2010-09-02 22:58:28