2010-01-14 2 views
1

Je souhaite utiliser le plug-in jquery autocomplete sur plusieurs boîtes de saisie. Afin de conserver mon code DRY, je veux lier la fonction autocomplete à une classe et dans la fonction autocomplete, passer l'identifiant du champ qui l'a appelé comme paramètre supplémentaire. Ce que je lutte avec est d'obtenir l'identifiant du champ qui a appelé la fonction. Exemple de code de ce que je fais est ci-dessous; Quelqu'un peut-il voir le problème?Comment obtenir l'ID du contrôle appelant la fonction de saisie semi-automatique jquery?

 $(".className").autocomplete('<%=Url.Action("Method", "Controller") %>', { 
      dataType: 'json', 
      parse: function(data) { 
       var rows = new Array(); 
       for (var i = 0; i < data.length; i++) { 
        rows[i] = { data: data[i], value: data[i], result: data[i] }; 
       } 
       return rows; 
      }, 
      formatItem: function(row) { 
       return row; 
      }, 
      extraParams: { 
       extra: function() { 
        var Field1 = $(this).attr('id'); 
        var Field2 = $("#Field1").val(); 
        var Field2 = $("#Field2").val(); 
        var Field3 = $("#Field3").val(); 
        return Field1 + "$" + Field2 + "$" + Field3 + "$" + Field4; 
       } 
      }, 
      delay: 40, 
      autofill: true, 
      selectFirst: false, 
      multiple: false 
     }); 

Répondre

2

Etes-vous sûr ce est passé à votre fonction extraParams? Sinon, vous pouvez utiliser quelque chose comme:

$(".className").each(function(){ 
    var el = $(this); 
    ..... 
     extra: function() { 
      var Field1 = el.attr(id); 
     } 
}); 

Cela vous permettra de lier chaque autocomplete à son propre élément spécifique.

+0

@ queen3 - Je ne sais pas si (this) est passé dans la fonction extraParams. En regardant votre exemple, je ne peux pas voir comment lier cela avec la fonction de saisie semi-automatique (je suis un peu un jq new jquery). Pouvez-vous fournir un peu plus de détails? –

+0

Sur la ligne "var el = $ (this)" vous _fixez la variable. Maintenant, "el" sera disponible pour toutes les fonctions internes, peu importe quand ils sont appelés. Ainsi, vous avez accès à l'élément auquel votre fichier .autocomplete est attaché. – queen3

+0

@ queen3 - excellent, je viens d'ajouter la partie el.autocomplete (....) sous l'instanciation de la variable et tout fonctionne comme prévu.Merci pour votre aide. –