2010-09-01 100 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