Comment définir l'espace réservé lors de la réinitialisation de la valeur par select2. Dans mon exemple, si les emplacements ou les cases de sélection de grade sont cliqués et que mon select2 a une valeur, la valeur de select2 doit être réinitialisée et afficher l'espace réservé par défaut. Ce script réinitialise la valeur mais n'affiche pas l'espace réservé
$("#locations, #grade ").change(function() {
$('#e6').select2('data', {
placeholder: "Studiengang wählen",
id: null,
text: ''
});
});
$("#e6").select2({
placeholder: "Studiengang wählen",
width: 'resolve',
id: function(e) {
return e.subject;
},
minimumInputLength: 2,
ajax: {
url: "index.php?option=com_unis&task=search.locator&tmpl=component&<?php echo JSession::getFormToken() ?>=1",
dataType: 'json',
data: function(term, page) {
return {
q: term, // search term
g: $('#grade option:selected').val(),
o: $('#locations option:selected').val()
};
},
results: function(data, page) {
return {
results: data
};
}
},
formatResult: subjectFormatResult,
formatSelection: subjectFormatSelection,
dropdownCssClass: "bigdrop",
escapeMarkup: function(m) {
return m;
}
});
.select2("val", "")
plus fonctionner.$("#customers_select").val('').trigger('change') ;
Je l'ai utilisé et cela a fonctionné.Select2 a changé son API:
La meilleure façon de le faire maintenant est:
Edit: décembre 2016 Les commentaires suggèrent que ce qui suit est la façon mise à jour de le faire:
la source
$('#your_select_input').val('').trigger('change')
change
ajout de déclencheur, mais déclenche également la bibliothèque de validation que nous utilisons - pour l'instant, je devrai utiliser la version obsolète.La réponse acceptée ne fonctionne pas dans mon cas. J'essaye ça, et ça marche:
Définissez select2:
ou
Réinitialiser:
ou
la source
$('#your_select_input').val('').trigger('change')
ni$('#your_select_input').val('');
ne fonctionne pas dans FirefoxLa seule chose qui peut fonctionner pour moi est:
J'utilise la version 4.0.3
Référence
Selon la documentation Select2
la source
$('select2element').val("").trigger("change")
fonctionne très bien aussi.Avec Select2 version 4.0.9, cela fonctionne pour moi:
la source
Select2 utilise une classe CSS spécifique, donc un moyen simple de la réinitialiser est:
Et vous avez l'avantage que si vous avez plusieurs Select2 sous la même forme, tous seront réinitialisés avec cette seule commande.
la source
Utilisez ceci :
la source
POUR SUPPRIMER LA VALEUR SÉLECTIONNÉE
POUR EFFACER LES VALEURS D'OPTION
la source
Je sais que c'est une sorte de vieille question, mais cela fonctionne pour la version 4.0 de select2
ou
si vous avez des événements de modification liés
la source
$('#select2-element').last().val('').trigger('change.select2');
Utilisez ce qui suit pour configurer select2
Et pour effacer la sélection d'entrée par programme
la source
C'est la bonne façon:
J'utilise la dernière version de Select2.
la source
Vous devez d'abord définir select2 comme ceci:
Pour réinitialiser select2, vous pouvez simplement utiliser le bloc de code suivant:
la source
Vous pouvez effacer la sélection en
Mais cela ne vous ramènera pas à votre espace réservé.
Donc, c'est une demi-solution
la source
J'ai essayé les solutions ci-dessus mais cela n'a pas fonctionné pour moi.
C'est une sorte de piratage, où vous n'avez pas à déclencher de changement.
ou
la source
Pour les utilisateurs qui chargent des données distantes, cela réinitialisera le select2 dans l'espace réservé sans déclencher ajax. Fonctionne avec v4.0.3:
la source
Ainsi, pour réinitialiser le formulaire, certains d'entre vous auront un bouton de réinitialisation. Ajoutez le code suivant à l'intérieur de la balise de script
Ou tout simplement pour vider le champ de sélection sans conserver d'espace réservé:
la source
Pour l'espace réservé
Pour réinitialiser une sélection 2
J'espère que cela t'aides
la source
Suivre la manière recommandée de le faire. Trouvé dans la documentation https://select2.github.io/options.html#my-first-option-is-being-displayed-instead-of-my-placeholder (cela semble être un problème assez courant):
Lorsque cela se produit, cela signifie généralement que vous n'avez pas de blanc
<option></option>
comme première option dans votre<select>
.un péché:
la source
J'avais aussi ce problème et cela vient du fait de
val(null).trigger("change");
lancer uneNo select2/compat/inputData
erreur avant que l'espace réservé ne soit réinitialisé. Je l'ai résolu en attrapant l'erreur et en définissant directement l'espace réservé (avec une largeur). Remarque: Si vous en avez plusieurs, vous devrez les attraper chacun.J'utilise Select2 4.0.3
la source
change
événement. Essayez de déclencherchange.select2
- cela ne déclenchera pas les écouteurs liés (voir github.com/select2/select2/issues/3620 ).à partir de v.4.0.x ...
pour effacer les valeurs, mais aussi restaurer l'utilisation de l'espace réservé ...
s'il est vide, il sélectionnera à la place le premier élément d'option qui peut ne pas être ce que vous voulez
franchement ... Select2 fait tellement mal au cul, ça m'étonne qu'il n'ait pas été remplacé.
la source
J'ai essayé les solutions ci-dessus mais aucune n'a fonctionné avec la version 4x.
Ce que je veux réaliser, c'est: effacer toutes les options mais ne pas toucher l'espace réservé. Ce code fonctionne pour moi.
la source
En utilisant select2 version 3.2, cela a fonctionné pour moi:
N'a pas eu besoin de mettre en œuvre
initSelection
la source
Après avoir essayé les 10 premières solutions ici et avoir échoué, j'ai trouvé que cette solution fonctionnait (voir le commentaire "nilov commenté le 7 avril • édité" en bas de la page):
Le changement est alors effectué:
(L'auteur a montré à l'origine
var $select = $(this[1]);
, corrigé par un commentateurvar $select = $(this[0]);
, que je montre ci-dessus.)la source
Utilisez ce code dans votre fichier js
la source
Avant d'effacer la valeur à l'aide de cette
$("#customers_select").select2("val", "");
paramètre Essayez de mettre le focus sur tout autre contrôle lors de la réinitialisation, cliquez sur.Cela affichera à nouveau l'espace réservé.
la source
L'interface DOM, garde déjà une trace de l'état initial ...
Il suffit donc de faire ce qui suit:
la source
Eh bien chaque fois que je l'ai fait
J'ai commencé à avoir une sorte de décalage après environ trois à quatre déclencheurs. Je suppose qu'il y a une fuite de mémoire. Ce n'est pas dans mon code parce que si je supprime cette ligne, mon application est sans décalage.
Étant donné que les options allowClear sont définies sur true, je suis allé avec
Ceci peut être suivi d'un $ ('myselectdropdown'). Select2 ('close'); déclencheur d'événement sur l'élément select2 dom au cas où vous voudriez fermer la liste déroulante des suggestions ouvertes.
la source
Une façon [très] hacky de le faire (je l'ai vu fonctionner pour la version 4.0.3):
la source
Ma solution est:
la source
où 0 est votre première valeur de la liste déroulante
la source