2010-09-01 6 views
4

J'essaie d'appliquer la saisie semi-automatique jQuery UI à trois boîtes d'entrée en même temps, car la requête et la logique sont presque les mêmes, un seul paramètre change entre eux.jQuery autocomplete: sélectionnez l'ID de l'événement 'source'

Depuis que j'utilise une source distante qui est récupérée avec ajax j'essaie de savoir à partir de quelle boîte de texte la demande a été faite.

Comme vous pouvez le voir dans l'instruction 'switch' à l'événement 'source' j'ai essayé $ (this) .attr ("id"), mais cela ne fonctionne pas, il retourne 'indefined'

I essayé ceci parce qu'il a travaillé sur les événements 'select' et 'focus', mais pas sur 'source'. Je suppose que la façon dont je l'utilise, je pointe vers la 'source'

Est-ce que quelqu'un sait un moyen de savoir à partir de quel élément l'événement a été appelé dans ce cas?

Merci!

$("#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); 
      } 
     }); 
}); 

Répondre

5

Je pense que vous recherchez this.element.attr("id") dans votre instruction switch. Cela devrait fonctionner pour trouver l'id correct.

En outre, votre code manquait une accolade, il devrait ressembler à ceci:

$("#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

Je suppose que je manqué le accolade quand je copiais de l'IDE, mais je n'ai pas cette erreur sur la source . Je vais essayer ça! – Arturo

+0

Merci, cela a fonctionné :) – Arturo