Une idée comment faire apparaître le DatePicker à la fin de la zone de texte associée au lieu de directement en dessous? Ce qui a tendance à se produire, c'est que la zone de texte est vers le bas de la page et le DatePicker se décale pour en tenir compte et recouvre totalement la zone de texte. Si l'utilisateur souhaite saisir la date au lieu de la sélectionner, il ne le peut pas. Je préfère le faire apparaître juste après la zone de texte pour que la façon dont elle s'ajuste verticalement importe peu.
Une idée comment contrôler le positionnement? Je n'ai vu aucun paramètre pour le widget, et je n'ai pas eu de chance de peaufiner les paramètres CSS, mais je pourrais facilement manquer quelque chose.
Réponses:
La réponse acceptée pour cette question n'est en fait pas pour le jQuery UI Datepicker. Pour changer la position de l'interface utilisateur jQuery Datepicker, modifiez simplement .ui-datepicker dans le fichier css. La taille du Datepicker peut également être modifiée de cette manière, il suffit d'ajuster la taille de la police.
la source
Voici ce que j'utilise:
Vous voudrez peut-être également en ajouter un peu plus à la marge de gauche pour ne pas être en face du champ de saisie.
la source
$(this).position(my:'left top', at:'left bottom', of:'#altField')
(puisque j'utilise l'altField
option datepicker pour l'affichage)Je le fais directement dans le CSS:
Mes champs de saisie de date ont tous une largeur de 100 px. J'ai également ajouté le z-index pour que le calendrier apparaisse également au-dessus des popups AJAX.
Je ne modifie pas le fichier CSS jquery-ui; Je surcharge la classe dans mon fichier CSS principal, donc je peux changer le thème ou mettre à jour le widget sans avoir à ressaisir mes mods spécifiques.
la source
Voici ma variante de l'alignement du calendrier Datepicker.
Je pense que c'est plutôt sympa, car vous pouvez contrôler le positionnement via jQuery UI Position util.
Une restriction: jquery.ui.position.js requis.
Code:
la source
afterShow
méthode.Voici une autre variante qui fonctionne bien pour moi, ajustez le rect.top + 40, rect.left + 0 en fonction de vos besoins:
la source
Cela fonctionne pour moi:
la source
Tout d'abord, je pense qu'il devrait y avoir une
afterShowing
méthode dans l'objet datepicker, où vous pouvez changer la position après que jquery a fait tout son vaudou dans la_showDatepicker
méthode. En outre, un paramètre appelépreferedPosition
serait également souhaitable, vous pouvez donc le définir et le modifier au cas où la boîte de dialogue serait rendue en dehors de la fenêtre.Il y a un "truc" pour faire cette dernière chose. Si vous étudiez la
_showDatepicker
méthode, vous verrez l'utilisation d'une variable privée$.datepikcer._pos
. Cette variable sera configurée si personne ne l'a déjà configurée. Si vous modifiez cette variable avant d'afficher la boîte de dialogue, Jquery la prendra et essaiera d'allouer la boîte de dialogue dans cette position, et si elle est restituée hors de l'écran, elle l'ajustera pour s'assurer qu'elle est visible. Ça sonne bien, hein?Le problème est;
_pos
est privé, mais si cela ne vous dérange pas. Vous pouvez:Mais faites attention aux mises à jour de Jquery-ui, car un changement dans l'implémentation interne du
_showDatepicker
peut casser votre code.la source
J'avais besoin de positionner le sélecteur de date en fonction d'un div parent dans lequel résidait mon contrôle d'entrée sans bordure. Pour ce faire, j'ai utilisé l'utilitaire "position" inclus dans jquery UI core. Je l'ai fait lors de l'événement beforeShow. Comme d'autres l'ont commenté ci-dessus, vous ne pouvez pas définir la position directement dans beforeShow, car le code de sélection de date réinitialisera l'emplacement après avoir terminé la fonction beforeShow. Pour contourner cela, définissez simplement la position à l'aide de setInterval. Le script actuel se terminera, montrant le sélecteur de date, puis le code de repositionnement s'exécutera immédiatement après que le sélecteur de date soit visible. Bien que cela ne devrait jamais arriver, si le sélecteur de date n'est pas visible après 0,5 seconde, le code a une sécurité intégrée pour abandonner et effacer l'intervalle.
la source
lier le focusin après avoir utilisé datepicker changer le css du widget datepicker souhaiter de l'aide
la source
je l'ai corrigé avec mon code jquery personnalisé.
a donné à mon champ de saisie datepicker une classe " .datepicker2 "
trouver sa position actuelle du haut et
positionné la boîte de dialogue , dont le nom de classe est " .ui-datepicker "
voici mon code.
ici "40" est mon pixel attendu, vous pouvez changer avec le vôtre.
la source
correction du problème de position d'affichage daterangepicker.jQuery.js
la source
Une fonction jquery très simple.
la source
J'ai passé un temps ridicule à essayer de résoudre ce problème pour plusieurs pages d'un nouveau site que je développe et rien ne semblait fonctionner (y compris les différentes solutions présentées ci-dessus que j'ai implémentées. Je suppose que jQuery vient de changer les choses se sont suffisamment améliorées depuis qu'on leur a suggéré que les solutions ne fonctionnent plus. Je ne sais pas. Honnêtement, je ne comprends pas pourquoi il n'y a pas quelque chose de simple implémenté dans l'interface utilisateur jQuery pour configurer cela, comme cela semble être un problème assez important avec le calendrier qui apparaît toujours à une certaine position considérablement en bas de la page à partir de l'entrée à laquelle il est attaché.
Quoi qu'il en soit, je voulais une solution finale suffisamment générique pour pouvoir l'utiliser n'importe où et cela fonctionnerait. Il me semble être enfin arrivé à une conclusion qui évite certaines des réponses les plus compliquées et spécifiques au code jQuery ci-dessus:
jsFiddle: http://jsfiddle.net/mu27tLen/
HTML:
JS:
Essentiellement, j'attache une nouvelle balise de style à la tête avant chaque événement "show" de datepicker (en supprimant le précédent, s'il est présent). Cette méthode permet de contourner une grande majorité des problèmes que j'ai rencontrés pendant le développement.
Testé sur Chrome, Firefox, Safari et IE> 8 (car IE8 ne fonctionne pas bien avec jsFiddle et je perds le goût de me soucier de
Je sais qu'il s'agit d'un mélange de contextes jQuery et javascript, mais à ce stade, je ne veux tout simplement pas faire l'effort de le convertir en jQuery. Ce serait simple, je sais. J'en ai tellement fini avec cette chose en ce moment. J'espère que quelqu'un d'autre pourra bénéficier de cette solution.
la source
Ils ont changé le nom de la classe en
ui-datepicker-trigger
Donc cela fonctionne dans
jquery 1.11.x
la source
Je l'ai pris de (( Comment contrôler le positionnement de jQueryUI datepicker ))
$ .extend ($. datepicker, {_checkOffset: function (inst, offset, isFixed) {return offset}});
Ça marche !!!
la source
Ou vous pouvez utiliser l'événement focus sur votre objet dateSelect et positionner l'API ensemble. Vous pouvez permuter le haut et le bas et la gauche pour la droite ou le centre (ou vraiment tout ce que vous voulez de l'api de position). De cette façon, vous n'avez pas besoin d'un intervalle ou d'une solution incroyablement complexe et vous pouvez configurer la mise en page en fonction de vos besoins en fonction de l'emplacement de l'entrée.
la source
Il est également intéressant de noter que si IE tombe en mode bizarreries, vos composants d'interface utilisateur jQuery et d'autres éléments seront mal positionnés.
Pour vous assurer de ne pas tomber en mode bizarreries, assurez-vous de définir correctement votre doctype sur le dernier HTML5.
L'utilisation de la transition fait du désordre. Espérons que cela permettra à quelqu'un de gagner du temps dans le futur.
la source
Cela place la fonctionnalité dans une méthode nommée function, permettant à votre code de l'encapsuler ou de faire de la méthode une extension jquery. Juste utilisé sur mon code, fonctionne parfaitement
la source
Dans Jquery.UI, mettez simplement à jour la fonction _checkOffset, afin que viewHeight soit ajouté à offset.top, avant que l'offset ne soit renvoyé.
la source
la source
la source