Select2 pas de calcul `résolu` largeur correctement si vous sélectionnez est caché
Je suis en utilisant Twitter bootstrap et le fantastique Select2 plugin.
Ces travaillons une grande, j'ai réalisé que vous devez définir {width: 'resolve'}
lors de l'initiation de Select2 sinon, il semble foiré!.
Mais j'ai un problème avec un de mes sélectionne, comme vous pouvez le voir dans l'image ci-dessous, la Referee Type
sélectionnez n'a pas la bonne largeur.
Cela est dû en raison de ce champ étant initialement masqué, et ne devient visible que si Arbitre est sélectionné dans le Groupe champ.
Alors, comment puis-je résoudre ce problème?
- Pouvez vous s'il vous plaît fournir un jsfiddle cette façon, nous pouvons jeter un oeil à votre problème?
- une option est d'attendre jusqu'à ce que l'élément indiqué pour initialiser le plugin, une autre est de ne pas cacher
select
mais le placer hors de l'écran jusqu'à ce que nécessaire. Démo aiderait - J'ai été en utilisant select2 pour un certain temps et j'ai l'habitude de définir la largeur en ligne dans l'élément de style dans le HTML je sais que ce n'est pas une très bonne pratique, mais Select2 tente de copier l'élément de style largeur de l'avant pour résoudre ses dimensions réelles de sorte qu'il vaut la peine un coup de feu. Dans ce cas, vous pouvez supprimer
width: 'resolve'
. - essayez d'ajouter inline largeur avec "!important".
Vous devez vous connecter pour publier un commentaire.
Vous pouvez définir la largeur de la
<select>
élément comme suit:Jusqu'à ce que vous trouver la largeur désirée que vous êtes à la recherche pour. En fait, les exemples sur le site officiel select2 plugin site sont effectuées de cette manière.
Toutefois, si vous avez l'intention au moment de rester loin de styles en ligne, vous pouvez toujours simplement les remplacer select2 du CSS et de la cible le conteneur supérieur.
Sélectionnez 2 est assez intelligent pour le calcul de la taille si seulement vous mettre dans la balise select. comme
<select style="width: 100%"></select>
CSS de mise en forme sur les classes ne fonctionnerait pas!
Lire la suite dans "Responsive design pour Cent de la largeur"
Au lieu d'invoquer
select2()
sur l'Arbitre de Type lorsque le chargement de la page, invoquerselect2
après montrant Arbitre Type pour la première fois. De cette façon, le select sera visible (avec une bonne largeur), et le'width': 'resolve'
option devrait fonctionner. Si vous fournissez une petite jsfiddle exemple, il serait plus facile de le souligner.J'ai résolu mon problème similaire avec CSS simple:
Définir la propriété style de
select
élément avec une largeur de 100%Voir Responsive design pour Cent de la largeur
L'exécuter lorsque vous affichez des contrôles avec Select2 joint:
Ma solution préférée consiste à arrêter
select2
de l'affectation de ceswidth
et de les laisser en automatique. Commentaire de la suite dansselect2.full.js
:Pour Conteneur:
Pour la Recherche à l'intérieur du conteneur:
hack pour faire le travail consiste à exécuter:
$('.filter-modal select').css('width', '100%');
avant
$('select').select2().
https://github.com/select2/select2/issues/4269
Vous pouvez lier un événement click à l'élément qui vous ouvre élément masqué et définir la select2 largeur de là. A travaillé pour moi et c'est assez simple. J'ai utilisé l'événement click parce que faire avec juste "document ready" ne fonctionnait pas.
Select2 a un bug étrange qui pas de "résoudre" dans le bon sens caché Choisir 2 éléments. Ce n'est pas à la place de travail
width: "resolve"
que c'est déjà la valeur par défaut. Au lieu de la solution de contournement est de montrer la select2 et les cacher soudain, une seconde plus tard la déclaration.Cela permettra de rendre correctement la select2.
Cela a fonctionné pour moi
également une largeur fixe