JQuery UI Datepicker, d'inverser l'ordre de l'année dans les listes déroulantes
J'ai un datepicker avec changeyear: vrai. "L'année" du menu déroulant affiche le titre de 2009, alors au lieu de la prochaine année, en dessous du titre de 2008, 2007, 2006 et ainsi de suite, il commence à 1999 et compte vers le haut. Je n'arrive pas à trouver une solution facile à inverser cet ordre?
- Je déteste vraiment la facilité d'utilisation pauvres sur les listes déroulantes pour sélectionner des années et généralement vous recommandons de les éviter. Voici pourquoi: useit.com/alertbox/20001112.html.
- C'est à l'intérieur d'un calendrier pop-up, il donne en fait à l'utilisateur trois options, tapez eux-mêmes (ce qui est recommandé dans cet article), sélectionnez-le à partir d'un calendrier contextuel ou utilisez la liste déroulante pour sélectionner l'année. Im assez sûr que c'est une solution viable!
Vous devez vous connecter pour publier un commentaire.
Je ne recommanderais pas l'édition de l'original ui.datepicker.js comme Cuong suggéré parce que vos modifications seront perdues dès que vous ou un autre développeur remplace le fichier lorsqu'une nouvelle version est disponible. Se souvenant de ce personnalisations ont été faites dans le but de les ré-appliquer n'est pas pratique. Au lieu de cela, vous pouvez remplacer le
_generateMonthYearHeader
méthode dans votre propre JS comme suit:J'ai juste écrit ce quelque chose que je suis de travailler, et il fait le tour bien 🙂
Je pense que le meilleur moyen de pirater le plugin sans déchirer c'est l'affectation d'un gestionnaire d'événements pour l'année sélectionner un élément.
Ce code doit fonctionner correctement! 😛
ui.datepicker.js
_generateMonthYearHeader: function(inst, drawMonth, drawYear, minDate, maxDate, selectedDate, secondary, monthNames, monthNamesShort)
Trouver la boucle suivante dans la méthode
Insérez le code suivant avant que la boucle:
J'ai une réponse pour vous, mais ce n'est pas exactement ce que vous voulez entendre.
Après des recherches sur internet pour trouver une solution qui permettrait d'inverser l'ordre des années, dans la liste déroulante, j'en viens à ceci:
Ce sera le maxdate de présélection, et par conséquent, le choix d'un an vous verrez automatiquement la dernière entrée, étant ainsi en mesure de faire défiler jusqu' de choisir une date antérieure.
Edit: yearRange est ajouté de manière arbitraire, pour créer un point de départ à 65 ans. maxDate est également choisie arbitrairement, comme une date de 12 ans avant d'écrire ce commentaire. Fondamentalement, ce menu permettra à quelqu'un de choisir un âge compris entre 12 et 65 ans.
Ce n'est pas idéal, mais ça fonctionne assez bien.
Il est un "chemin" pour obtenir le début de l'année à partir de la dernière date:
Au lieu si vous utilisez
yearRange
comme un nombre fixe d'annéesyearRange: "1900:-13"
il est préférable d'utiliser cette de bas en haut:"-70:"
, et de définir lamaxDate
. Maintenant, je reçois mon année de sélectionner la zone à partir de 2004 et non de 1900.P. S: Toutes les autres solutions ont été testées. Ils sont très lents, et certains ne fonctionnent pas si bien (en particulier les anciens - ensembles année en cours au lieu de 2004 par exemple).
Remplacer la première ligne de la
for
boucle avec: