web-dev-qa-db-fra.com

Comment obtenir la valeur de select2: désélectionner

comment puis-je obtenir la valeur de l'option non sélectionnée dans Select2 en utilisant select2:unselect

$('#mySelect').on("select2:unselect", function(e){

    var unselected_value = $('#mySelect').val(); // using this shows 'null'
    // or using below expression also shows 'null'
    var unselected_value = $('#mySelect :selected').val();

    alert(unselected_value);
}).trigger('change');

dans l'alerte de code ci-dessus montre 'null'

Je dois utiliser select2:unselect parce que l'événement 'change' détectera :select et :unselect les deux.

12
Vipin Kr. Singh

Enfin, j'ai la solution, à savoir: La valeur de l'option non sélectionnée est uniquement disponible avant d'être désélectionnée. Pas à select2:unselect mais plutôt à select2:unselecting maintenant le code sera:

$('#mySelect').on("select2:unselecting", function(e){
         var unselected_value = $('#mySelect').val();
         alert(unselected_value);
    }).trigger('change');
4
Vipin Kr. Singh

En réalité, la valeur des données est à l'intérieur de l'événement Object. Ce serait utile si vous avez affaire à select2 plusieurs valeurs.

function(e){
    console.log(e.params.data)
}
12
Chun

C'est une question plus ancienne, mais peut-être que cette réponse aidera quelqu'un. J'utilise Select2 v4.0.3 avec plusieurs valeurs/tags et n'ai besoin que de supprimer l'ID d'un identifiant spécifique. Je ne voulais vraiment pas utiliser l'événement unselecting comme mentionné dans d'autres réponses. Dans l'événement unselect, il n'y a pas d'objet args. Vous pouvez donc accéder à l'ID de celui que vous essayez de supprimer comme ceci ...

jQuery('.mySelect2').on("select2:unselecting", function(e){
    return true; // I don't use this unselecting event but here is how you could use it to get the ID of the one you are trying to remove.
    console.log(e);
    console.log(e.params);
    console.log(e.params.args.data);
    console.log(e.params.args.data.id);
    //console.log(e.params.args.data.tag); data.tag is specific to my code.
});

jQuery('.mySelect2').on('select2:unselect', function (e) {
    console.log(e);
    console.log(e.params);
    console.log(e.params.data);
    console.log(e.params.data.id);
    //console.log(e.params.data.tag); data.tag is specific to my code.

    /*
    Now you can do an ajax call or whatever you want for the specific
    value/tag that you are trying to remove which is: e.params.data.id.
    */
6
gfrobenius

L'élément non sélectionné passe par e.params.data. Nous pouvons accéder à sa valeur en utilisant "id" et si vous avez besoin du texte, vous pouvez utiliser "data.text".

 $("select").on("select2:unselect", function (e) {
             var value=   e.params.data.id;
             alert(value);
    });
3
Mahmaood ali

Voici ma solution pour changer la couleur de fond d'une ville sur une carte SVG en recherchant le nom de la ville en question. J'espère que cela pourrait vous aider

 $(".js-example-diacritics").on("select2:unselect", function(evt) {
                var element = evt.params.data.element;
                townColor(element.text, unHighLightColor);
            });

À la méthode townColor (), je passe le texte (nom de la ville) de l'élément select2 non sélectionné et la constante nommée unHighLightColor qui contient le nom de la couleur.

0
Jcc.Sanabria

sur Select2 4.0.3 i'am trouvé e.params a été modifié. Donc, pour trouver l'id de l'élément en cours de sélection, changez votre code comme suit:

$('select').on('select2:unselecting', function (e) {
    var id = e.params.args.data.id; //your id
    alert('Are You Sure ?');
    e.preventDefault();
  // Do something with your id
});
0
wahmal

Obtenir la valeur d'option spécifique si vous utilisez plusieurs balises: 

var unselected_value = $('#mySelect option:selected').val();
alert(unselected_value);
0
Migu Wala Ngalan