1
votes

Obtenez (UNIQUEMENT) l'ID du champ d'entrée à l'aide de .getAttribute

J'ai une liste de cases à cocher qui ont toutes un identifiant unique. Lorsqu'un bouton est enfoncé, il doit transmettre cette liste d'identifiants au back-end. Je peux obtenir les identifiants en utilisant la méthode .getAttribute mais cela inclut d'autres informations dont je n'ai pas besoin. Existe-t-il un moyen d'obtenir UNIQUEMENT l'identifiant de la case à cocher sélectionnée?

Voici le code de base qui se déclenche lorsque vous cliquez sur le bouton:

            $('input[name = "dCodes"]:checked').each(function () {
                selectedCodes.push($(this.getAttribute('id')));
            });

Voici ce que le tableau selectedCodes contient après avoir cliqué sur le bouton: entrez la description de l'image ici


1 commentaires

Partager un exemple html


3 Réponses :


0
votes

Vous devez utiliser selectedCodes.push ($ (this) .attr ('id'))); pour obtenir uniquement la valeur d'id dans ce tableau.


4 commentaires

Pourquoi créer un objet jQuery alors que vous pouvez obtenir l ' id à partir de l'objet existant?


@RoryMcCrossan car la question ne balise pas javascript et OP est plus focalisé sur jQuery


Eh bien, jQuery est Javascript, et créer un objet entier juste pour obtenir une seule propriété (à laquelle vous avez déjà accès) est redondant


@RoryMcCrossan ne pourrait pas être un extrait de beaucoup de code, vous ne pouvez pas juger de cette façon.



1
votes

Si vous voulez seulement la chaîne id , ne poussez pas un objet jQuery dans le tableau:

let selectedCodes = $('input[name="dCodes"]:checked').map(function () {
  return this.id;
}).get();

Remarque que cela peut être simplifié pour simplement récupérer la propriété id directement à partir de la référence this sans avoir besoin de getAttribute():

let selectedCodes = [];
$('input[name="dCodes"]:checked').each(function () {
  selectedCodes.push(this.id);
});

Pour aller plus loin encore, vous pouvez supprimer le besoin de la boucle explicite each () et de la déclaration de tableau séparé en utilisant map () de jQuery méthode:

let selectedCodes = [];
$('input[name="dCodes"]:checked').each(function () {
  selectedCodes.push(this.getAttribute('id'));
});


1 commentaires

Merci, c'était exactement ce dont j'avais besoin. J'ai utilisé votre solution finale en utilisant la méthode map ()



0
votes

ce doit être inclus.

selectedCodes.push($(this).attr('id'));


1 commentaires

Pourquoi créer un objet jQuery alors que vous pouvez obtenir l ' id à partir de l'objet existant?