9
votes

JQuery Select2, comment accéder aux données Ajax à la fonction (Modifier)?

J'utilise Select2 avec Ajax. Tout fonctionne bien, lorsque l'utilisateur clique sur l'élément qu'ils souhaitent, j'utilise la fonction sur (Modifier) ​​comme spécifié par la documentation pour faire des choses. xxx

la valeur de retour (e.val) est la valeur data.id à partir de l'appel AJAX, mais mon objet de données a " nom "," id "et" type ".

Je peux ajouter du code à dataformatselection () mais cela ne semble pas la logique et qui est déroutant. xxx

Comment puis-je accéder à l'ensemble Data objet (au lieu de data.Id ) à l'ON ("Changer". Événement?


0 commentaires

3 Réponses :


2
votes

Selon Select2 Docs Modifier l'événement doit avoir 3 propriétés: l'objet d'événement contient les propriétés personnalisées suivantes :

  • VAL: la sélection actuelle (en tenant compte du résultat du changement) - ID ou tableau d'IDS
  • ajouté: l'élément ajouté, le cas échéant - l'objet Elément complet, pas seulement l'ID
  • supprimé: l'élément retiré, le cas échéant - l'objet Elément complet, pas seulement l'ID

    Il existe même un exemple: xxx

    mais j'ai remarqué que ajouté et supprimé Les propriétés sont Ce n'est que présent lorsque multiple: true est activé. Je ne sais pas si c'est par conception ou est-ce que c'est un bogue. Je vais le signaler quand même, car l'élément sélectionné disponible sur le changement est définitivement nécessaire.


0 commentaires

21
votes
$("#e6").on('change', function(e) {
    // Access to full data
    console.log($(this).select2('data'));
});

1 commentaires

De cette manière, les données ne sont pas à jour, la valeur sélectionnée n'est pas marquée comme sélectionnée. Pour obtenir la valeur sélectionnée à l'aide de ES6, do $ entrée.Select2 ('"données"). Rechercher (item => item.Element.element.elected) . Testé avec SELECT 2 V4.0.12



0
votes

J'ai doute ... Comment puis-je prendre les valeurs montrant dans le journal de la console et l'utiliser?

C'est correct si je prends ces valeurs et mettez-la dans un var? Parce que si j'utilise console.log (var) pour tout varié créé, la valeur est affichée, mais si une alerte (var) est jamais affichée. P>

J'ai besoin de prendre la valeur de l'option sélectionnée Appeler avec Ajax une fonction PHP. P>

$("#e11").on('change', function(e) {
   //I create a var data and works it like an Array
   var data = $(this).select2('data');
   //Then I take the values like if I work with an array
   var value = data.id;
   var text = data.text;
   //If I use console.log(var) the values are displayed but not with an alert
}


2 commentaires

Je pense que vous devriez créer une nouvelle question, c'est un problème différent


$ (this) .Select2 ('Data') retournera un tableau, vous devez donc y accéder par data [index] .Id