Select2 désélectionnez toutes les valeurs

Je veux désélectionner toutes les valeurs en un clic sans utiliser chacune id séparément.

J'ai tripoté pendant un moment, mais cela désélectionne seulement la première valeur. Toutes les suggestions?

Voici comment j'essaie de désélectionner:

$( "#mybutton" ).click(function() {    
   $("select").select2('val', '')
});

Http://jsfiddle.net/6hZFU/75/

25
demandé sur Charles 2013-09-13 12:57:32

9 réponses

Essayez ceci à la place:

$('select').select2({
    placeholder: "select me"
});

$("#mybutton").click(function () {
    $("select").each(function () { //added a each loop here
        $(this).select2('val', '')
    });
});

Démo ici

21
répondu Sergio 2013-09-13 09:00:43
$("select").val('').change();

C'est tout :) http://jsfiddle.net/6hZFU/78/

Explication: lorsque vous modifiez la valeur d'une entrée ou sélectionnez via le navigateur JavaScript ne déclenche pas d'événement de changement pour ce changement (c'est ainsi que disent les spécifications).

Lorsque vous déclenchez l'événement de modification, select2 rattrapera et reflétera la nouvelle valeur de select.

38
répondu Ivan Ivanić 2015-11-06 09:32:57

Si vous utilisez Select2 version 4.0, vous devrez utiliser la nouvelle syntaxe:

$("select").val(null).trigger("change");
12
répondu Steve 2015-06-12 00:45:21

Si vous voulez effacer plusieurs listes déroulantes multiselect à L'aide de L'api Select2 v4, voici un moyen simple:

$("li.select2-selection__choice").remove();
$(".select2").each(function() { $(this).val([]); });

Pas de focus sur la liste déroulante et nettoyer les éléments" select "et" Select2";)

0
répondu Bulzib Rugulus 2015-06-23 18:32:37

J'ai essayé les solutions ci-dessus mais cela n'a pas fonctionné pour moi.

C'est le genre de hack, où vous n'avez pas à trigger change.

$("select").select2('destroy').val("").select2();

Ou

$("select").each(function () { //added a each loop here
        $(this).select2('destroy').val("").select2();
});
0
répondu tech_boy 2017-04-12 10:49:38

Essayez ceci, cela fonctionne parfaitement.

$('#form-search-amenities > option').prop("selected", false);
$("li.select2-selection__choice").remove();

#form-search-amenities faudrait le remplacer par l'ID de votre <select> déroulante.

0
répondu Munawar Ali 2017-05-21 10:12:47
$('#destinatariMail').val("-1").trigger("change");

De cette façon, vous désélectionnerez également les options marquées qui ont été insérées "à la volée".

0
répondu greg 2017-05-29 10:19:41

Dans le cas où quelqu'un est intéressé par la solution de configuration native Select2 (Pas de bouton séparé).

Au moment de l'écriture (select2 V 4), Select2 peut ajouter un bouton pour effacer la sélection multiple. Pas besoin de <option></option> solution de contournement pour que l'espace réservé apparaisse:

$('#my-select').select2({
    placeholder: "Select something",
    allowClear: true
});

À Partir de la documentation.

0
répondu Roman Susi 2018-07-22 10:46:39

Vous devez utiliser la classe de votre sélectionnez(select2_single)

Exemple:

$('#button_clear').click(function () 
{
    $('.select2_single').select2('val',''); 
});

Debes usar la clase de tus sélectionnez

Ej:

$('#button_clear').click(function () 
{
    $('.select2_single').select2('val',''); 
});
-1
répondu Abraham Rosales 2017-04-04 22:30:03