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
});
@ 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? –
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
@ 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. –