Réinitialiser select2 valeur et de montrer de l'espace réservé
Comment puis-je régler l'espace réservé sur la valeur de réinitialisation par select2. Dans mon exemple, Si les emplacements ou grade sélectionnez les cases sont cliqués et mon select2 a une valeur que la valeur de select2 devrait se réinitialiser et de montrer la valeur par défaut de l'espace réservé. Ce script est la réinitialisation de la valeur, mais ne montrent 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;
}
});
Vous devez vous connecter pour publier un commentaire.
Vous devez définir la select2 comme
Pour réinitialiser le select2
.select2("val", "")
fonctionne plus.$("#customers_select").val('').trigger('change') ;
J'ai utilisé ce et cela a fonctionné.Select2 a changé leur API:
La meilleure façon de le faire est maintenant:
Edit: décembre 2016 Observations suggèrent que la ci-dessous est la mise à jour de façon à ce faire:
$('#your_select_input').val('').trigger('change')
change
déclencher plus, mais déclenche également la validation de la bibliothèque nous utilisons--pour l'instant je vais utiliser la version obsolète.$('#your_select_input').val('').trigger('change')
ni$('#your_select_input').val('');
ne fonctionne pas dans Firefoxval([])
?val([])
œuvres, n'hésitez pas à mettre à jour la réponse.$('#your_select_input').val(null).trigger('change');
Si vous ne voulez pas liéchange
auditeurs à exécuter (c'est à dire silencieusement modifier la valeur), puis déclencherchange.select2
à la place (github.com/select2/select2/issues/3620)La accepté de répondre ne fonctionne pas dans mon cas. Je vais essayer cela, et cela fonctionne:
Définir select2:
ou
Pour réinitialiser:
ou
$('#your_select_input').val('').trigger('change')
ni$('#your_select_input').val('');
ne fonctionne pas dans FirefoxLa seule chose que peut travailler pour moi, c'est:
J'utilise la version 4.0.3
Référence
Selon Select2 Documentation
$('select2element').val("").trigger("change")
fonctionne bien aussi.Select2 utilise une classe CSS spécifique, donc un moyen facile de le réinitialiser est:
Et vous avez l'avantage de si vous avez plusieurs Select2 à la même forme, tous seront réinitialisées avec cette commande unique.
Utiliser ceci :
POUR SUPPRIMER LA VALEUR SÉLECTIONNÉE
POUR EFFACER LES VALEURS DE L'OPTION
Je sais c'est une vieille question, mais cela fonctionne pour le select2 version 4.0
ou
si vous avez des événements de changement lié à elle
$('#select2-element').last().val('').trigger('change.select2');
Tout d'abord, vous devez définir select2 comme ceci:
Pour réinitialiser select2, tout simplement, vous pouvez utiliser le bloc de code suivant:
Utiliser les étapes suivantes pour configurer select2
Et à claire pour sélectionner l'entrée par programme
C'est la façon correcte:
Je suis l'aide de la dernière version de Select2.
Vous pouvez effacer te de sélection par
Mais il l'habitude de vous tourner le dos à votre espace réservé.
De sorte que son une demi-solution
J'ai essayé les solutions ci-dessus, mais il ne fonctionne pas pour moi.
C'est le genre de hack, où vous n'avez pas à déclencher un changement.
ou
Pour les utilisateurs de chargement à distance des données, cette permet de réinitialiser le select2 à l'espace réservé sans coup d'envoi de l'ajax. Fonctionne avec v4.0.3:
À la suite de la recommandé façon de faire. Trouvé dans la documentation https://select2.github.io/options.html#my-first-option-is-being-displayed-instead-of-my-placeholder (ce qui semble être un problème assez commun):
Lorsque cela se produit, cela signifie généralement que vous n'avez pas de vide
<option></option>
la première option de votre<select>
.comme dans:
J'ai été aussi à avoir ce problème et il découle de
val(null).trigger("change");
jeter unNo select2/compat/inputData
erreur avant de l'espace réservé est remis. Je l'ai résolu par la capture de l'erreur et de réglage de l'espace réservé directement (avec une largeur).Remarque: Si vous avez plus d'un, vous aurez besoin pour attraper chacun.
Je suis en cours d'exécution Select2 4.0.3
change
événement. Essayez de déclenchementchange.select2
- qui ne se déclenche pas lié auditeurs (voir github.com/select2/select2/issues/3620).J'ai essayé les solutions ci-dessus, mais aucune n'a fonctionné avec la version 4x.
Ce que je veux réaliser est: désactivez toutes les options, mais ne touche pas l'espace réservé. Ce code fonctionne pour moi.
À l'aide de select2 version 3.2 cela a fonctionné pour moi:
N'a pas besoin de mettre en œuvre
initSelection
comme des v. 4.0.x...
pour effacer les valeurs, mais aussi restaurer l'espace réservé à l'usage...
si elle est vide, il sélectionne le premier élément de l'option à la place qui peut ne pas être ce que vous voulez
franchement...Select2 est une douleur dans le cul, ça m'étonne qu'il n'a pas été remplacé.
Pour la place de titulaire
À réinitialiser un choix de 2
Espère que cette aide
Avant d'effacer la valeur à l'aide de cette
$("#customers_select").select2("val", "");
Essayez de définir le focus à n'importe quel autre contrôle sur réinitialiser cliquez sur.
Cela permettra de montrer l'espace réservé à nouveau.
L'interface DOM, déjà assure le suivi de l'état initial...
Ce faisant, la suite est assez:
Bien à chaque fois que je l'ai fait
J'ai commencé à obtenir une sorte de décalage après une période de trois à quatre déclencheurs. Je suppose qu'il y a une fuite de mémoire. Ses pas dans mon code, parce que si je dois supprimer cette ligne, mon application est en décalage gratuitement.
Depuis que j'ai allowClear options, c'est vrai, je suis allé avec
Cela peut être suivi par un $('myselectdropdown').select2 ("fermer"); événement déclencheur sur la select2 élément du dom dans le cas où vous souhaitez fermer les suggestion de liste déroulante.
Un [très] hacky façon de le faire (je l'ai vu travailler pour la version 4.0.3):
Après avoir essayé la première 10 solutions ici et à défaut, j'ai trouvé cette solution de travail (voir "nilov a commenté sur Avr 7 • édition" commentaire en bas de la page):
La modification est alors effectuée:
(L'auteur présentait à l'origine
var $select = $(this[1]);
, dont un auteur a corrigé àvar $select = $(this[0]);
, que je montre ci-dessus.)Ma solution est la suivante:
où 0 est votre première valeur de la liste déroulante
Utiliser ce code dans votre fichier js
Je ne sais pas si quelqu'un d'autre vécu cela, mais une fois que le code a frappé le déclencheur ("changement") mon javascript est juste arrêté, ne revint jamais en forme sur la gâchette, et le reste de la fonction n'a jamais été exécutée.
Je ne suis pas assez familier avec jquerys déclencheur à dire que c'est pas prévu sur. J'ai eu autour d'elle en l'enveloppant dans un setTimeout, laid mais efficace.
Afin de réinitialiser les valeurs et l'espace réservé je viens de relancer le select2 élément:
Je faire pour ce cas: