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.
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');
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)
}
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.
*/
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);
});
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.
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
});
Obtenir la valeur d'option spécifique si vous utilisez plusieurs balises:
var unselected_value = $('#mySelect option:selected').val();
alert(unselected_value);