Prévenir select2 retournement de la liste déroulante vers le haut
Que par le titre, est-il un moyen de forcer select2 toujours de créer une liste déroulante au lieu d'une baisse de la?
Il semble également y avoir un peu de javascript qui est soit à l'origine du flip lorsque vous faites défiler au-dessus de la liste déroulante, l'ajout d'une nouvelle classe CSS "select2-drop-dessus", ou les deux.
EDIT: je devrais ai précisé que je suis en tirant la bibliothèque via select2-rails. J'espère qu'il y a un moyen de contourner ce qui n'implique pas de tirer l'ensemble de la select2 lib en moi-même et de l'édition select2.js fichier directement.
OriginalL'auteur kjb | 2013-11-14
Vous devez vous connecter pour publier un commentaire.
Modifier le plugin n'est pas recommandée comme vous le mentionnez. J'ai eu un problème similaire et je ne pouvais pas trouver un moyen d'utiliser
select2
options pour forcer le menu déroulant permettant de rester en-dessous. La solution que j'ai est le suivant:Ce code détermine si il y a assez de place pour placer le menu déroulant en bas et si pas, crée par l'ajout de la marge en bas à certains élément de la page. Ensuite, il passe à juste au-dessus de la select2 de sorte que le menu déroulant ne flip.
Je ne suis pas sûr de ce que tu veux dire, cela fonctionne bien pour moi dans Chrome
La version que j'utilise est 4.0, et c'est un encore 3. J'ai déjà fixé de toute façon. jsfiddle.net/brunodd/jEADR/2009
OriginalL'auteur
Vous pouvez simplement modifier
select2.js
Où il est dit
de passer à la
Vous ne devriez jamais modifier le script d'origine ou vous AUREZ des problèmes en bas de la ligne.
Malheureusement, c'est la seule façon de résoudre le problème pour moi (avec ajax de l'interrogation et de la nécessité pour le sélectionner). Un RP a été créé pour résoudre ce problème, mais n'est pas encore fusionné : github.com/select2/select2/pull/4560
ne fonctionne pas pour moi 🙁 L'inverse fonctionne, mais pas cela. Quelle peut être la raison?
Solution de travail, mais je suis complètement d'accord avec @cmfolio. Au lieu de cela, quelqu'un devrait soulever une pull request avec
enoughRoomAbove: true/false
que le plugin option de configuration. Permettez-moi de saisir l'occasion :). Merci.OriginalL'auteur
Depuis la modification du code source n'est pas une option et l'ajout d'un crochet à l'
select2:open
événement n'est pas très élégant, en particulier lorsque vous avez plusieurs select2 instances dans la même page, j'ai écrit une petite extension pour leSelect2
plugin.Mon application est inspiré par un PR de plugin référentiel (https://github.com/select2/select2/pull/4618) qui n'est pas encore fusionné.
Fondamentalement, le code suivant remplace le plugin original de la fonction qui gère la liste déroulante de positionnement et ajoute une nouvelle option (
dropdownPosition
) pour forcer le menu déroulant de positionnement au-dessus/en-dessous.La nouvelle
dropdownPosition
option peut prendre les valeurs suivantes:-
below
- la liste déroulante est affichée au bas de l'entrée;-
above
- la liste déroulante est affichée en permanence en haut de l'entrée;-
auto
(par défaut) - il utilise l'ancien comportement.Il suffit d'insérer le code suivant après
select2.js
fichier:L'initialiser le plugin comme suit:
Violon ici:
https://jsfiddle.net/byxj73ov/
Github:
https://github.com/andreivictor/select2-dropdownPosition
OriginalL'auteur
Vous pouvez le faire en les écrasant CSS comme ceci:
OriginalL'auteur
J'ai utilisé pour trouver plus facile, plus rapide solution pour que:
C'est simple, il suffit de changer la .choisir 2-liste, par-dessus à .choisir 2-liste--ci-dessous dans le l'ouverture de l'événement (select2:ouvrir).
Il ne fonctionne qu'en vertu de l'événement, et il pourrait y avoir de nombreuses autres façons d'effectuer simplement de changer de classes lorsque la sélection est ouverte.
ps. Il ne fonctionnera pas si vous essayez de remplir votre sélection à l'aide de jquery.
Eh bien, il a travaillé pour moi. Des acclamations.
Je ne sais pas comment il est possible avec une ligne en haut de la valeur sur l'élément concerné
J'ai cassé mes doigts en essayant de faire une telle chose, je ne suis pas sûr de comment ça fonctionne, aucune théorie. Je l'ai réalisé par tente.
Wow, ok. Cheers
OriginalL'auteur
Mis à jour à partir de [shanabus] réponse
OriginalL'auteur