jQuery date / time picker [fermé]

245

J'ai cherché un plugin jQuery décent qui peut gérer à la fois les dates et les heures. L'interface utilisateur principale DatePickerest géniale, mais malheureusement, je dois également pouvoir y consacrer du temps.

J'ai trouvé quelques hacks pour que le DatePicker fonctionne avec le temps, mais ils semblent tous assez inélégants et Google ne présente rien de bien.

Existe-t-il un bon plugin jQuery pour sélectionner les dates et heures dans un seul contrôle d'interface utilisateur avec une interface utilisable?

Chelsea
la source
Je suis presque sûr que mon exemple est un peu moins déroutant et plus convivial. Il y a des avantages et des inconvénients des deux.
Michael Stone

Réponses:

251

L'option de sélection DateTime la plus agréable et la plus simple est de loin http://trentrichardson.com/examples/timepicker/ .

Il s'agit d'une extension du jQuery UI Datepicker donc il prendra en charge les mêmes thèmes et il fonctionne à peu près de la même manière, une syntaxe similaire, etc. Cela devrait être fourni avec l'imo jQuery UI.

xordon
la source
3
J'utilise celui-ci et je l'adore.
Sonny
3
J'aime ça, mais c'est toujours TRÈS buggé.
Alastair Pitts
11
"TRÈS buggy"? À peine. Je l'utilise dans le code de production, et je l'ai depuis un moment maintenant. Il est également activement développé.
Sonny
7
@Sonny: que vous l'utilisiez en production n'a aucune incidence sur le fait qu'il soit buggé ou non. Vous n'avez peut-être tout simplement pas vu ses bugs parce que vous ne faites pas avec lui les choses qui les exposent, ce qui est peut-être Alastair. D'un autre côté, il n'a présenté aucune preuve de sa réclamation, donc je ne suis pas enclin à la prendre trop au sérieux ...
iconoclaste
18
Mon plus gros problème avec ce plugin est l'interface utilisateur: pourquoi voudrais-je utiliser des curseurs, horizontaux à cela !, pour saisir un temps!? Cela me semble très gênant. J'ai eu tellement d'expérience avec des curseurs où je n'arrive pas à obtenir le nombre que je veux (en répétant un peu plus puis un peu en dessous) et je finis par le taper. Un clavier est normalement le moyen le plus simple d'entrer une valeur numérique précise. Si vous voulez une méthode de saisie visuelle, une horloge est la normale pour le temps, pas un curseur. Plus difficile à implémenter, mais peut en fait être utile (tant que la saisie au clavier est également possible).
iconoclaste du
46

@David, merci pour la recommandation! @fluid_chelsea, je viens de publier Any + Time (TM) version 3.x qui utilise jQuery au lieu de Prototype et a une interface très améliorée, donc j'espère qu'il répond maintenant à vos besoins:

http://www.ama3.com/anytime/

En cas de problème, faites-le moi savoir via le lien commentaire sur mon site!

Andrew M. Andrews III
la source
6
La version 4.x d'Any + Time (TM) est maintenant disponible! La nouvelle version prend en charge les TIME ZONES (trouvez-le dans n'importe quel autre sélecteur!) Ainsi que les sélecteurs / chaînages jQuery, la suppression facile (évitez les fuites de mémoire!) Et de nombreuses autres améliorations. Veuillez lui faire un tour, et si vous avez des problèmes ou des suggestions, faites-le moi savoir via la page de commentaires sur mon site Web.
Andrew M. Andrews III
4
Any + Time semble assez lisse. Je l'aime.
Zack Peterson
Je viens d'implémenter AnyTime en quelques minutes sur une application Rails. Fonctionne parfaitement.
Gwyn Morfey,
Je viens de choisir le sélecteur AnyTime comme sélecteur de choix pour mon application JSF! Merci pour ce beau produit, continuez votre bon travail!
Arg
Any + Time ajoute un nouveau div masqué pour l'interface utilisateur pour chaque entrée Any + Time (contrairement au jpery UI datepicker qui réutilise le div masqué UI), ce qui réduit considérablement les performances dans le MSIE6 mal conçu. N'utilisez donc pas Any + Time si vous devez prendre en charge MSIE6!
Eduardo
14

À mon avis, les dates et les heures doivent être traitées comme deux zones de saisie distinctes pour être plus utilisables et efficaces pour l'utilisateur à saisir. Laisser l'utilisateur saisir une chose à la fois est un bon principe, à mon humble avis.

J'utilise le noyau UI DatePicker et le sélecteur de temps suivant.

Celui-ci est inspiré de celui utilisé par Google Agenda:

jQuery timePicker :
exemples: http://labs.perifer.se/timedatepicker/
projet sur github: https://github.com/perifer/timePicker

J'ai trouvé que c'était la meilleure parmi toutes les alternatives. L'utilisateur peut saisir rapidement, il a l'air propre, est simple et permet à l'utilisateur de saisir des heures spécifiques à la minute près.

PS: À mon avis: les curseurs (utilisés par certains sélecteurs de temps alternatifs) prennent trop de clics et nécessitent la précision de la souris de l'utilisateur (ce qui rend la saisie plus lente).

Magne
la source
Core UI DatePicker: jqueryui.com/demos/datepicker
Magne
Cela tue les avantages de liaison de modèle de C # MVC pour ce domaine
Serj Sagan
13

Ma meilleure expérience avec un sélecteur de date est avec AnyTime basé sur un prototype . Je sais que ce n'est pas jQuery, mais cela vaut peut-être toujours le compromis pour vous. Je ne connais absolument aucun prototype, et c'est toujours assez facile à utiliser.

Une mise en garde que j'ai trouvée: il n'est pas compatible avec certains navigateurs. Autrement dit, cela ne fonctionnait pas avec une version plus récente du prototype sur Chrome.

David Berger
la source
1
Si je pouvais utiliser un prototype, ce ne serait pas un problème, malheureusement nous sommes coincés avec jQuery pour cette application.
Chelsea
7
Juste une mise à jour - AnyTime 3 fonctionne désormais avec jQuery.
Jaxidian
Je n'y ai pas pensé depuis des mois et des mois. Mais mon projet personnel voulait une mise à jour et j'étais sur le point de lancer quelques jquery. Je pensais que je remplacerais le datepicker pendant que j'y suis parce que je n'avais pas besoin de toutes les fonctionnalités d'Any + Time et j'ai pensé que je pourrais aussi bien utiliser tous les jQuery. Et bam! Je tombe sur ça. Moment impressionnant.
David Berger
Bien, même si le sélecteur d'année (en cliquant sur <ou>) me semble difficile.
un codeur
7

Juste pour ajouter aux informations ici, The Fluid Project a une belle rédaction wiki qui présente un grand nombre de sélecteurs de date et / ou d'heure ici .

Jaxidian
la source
4

J'ai fait des recherches récemment et je n'ai pas encore trouvé de sélecteur de date décent qui comprend également un sélecteur de temps décent . Ce que j'ai fini par utiliser était l'impressionnant DatePicker d'Eyecon , avec deux listes déroulantes simples pour le temps. J'ai été tenté d'utiliser Timepickr.js cependant, cela ressemble à une approche vraiment sympa.

décomposer
la source
3

J'ai rencontré ce même problème. En fait, j'ai développé ma programmation côté serveur, mais j'ai fait une recherche rapide pour essayer de vous aider et j'ai trouvé cela.

Semble bien, n'a pas trop regardé la source, mais semble être purement JavaScript.

Regardez:

http://www.rainforestnet.com/datetimepicker/datetimepicker.htm

Voici le lien vers la page de démonstration:

http://www.rainforestnet.com/datetimepicker/datetimepicker-demo.htm

bonne chance

Michael Stone
la source
Je l'utilise depuis quelques années. Ça devient un peu long dans la dent mais ça marche.
un codeur
1

Il s'agit d'un code que j'utilise pour qu'un utilisateur sélectionne un datetimepicker, règle l'heure et que l'autre datetimepicker ajoute une minute à cette heure.

J'en avais besoin pour un contrôle médicamenteux personnalisé ....

Quoi qu'il en soit, j'ai pensé que cela pourrait aider quelqu'un d'autre car je ne pouvais trouver la réponse nulle part en ligne ...

(du moins pas une réponse complète)

Gardez à l'esprit que le 60000 ajouté, ajoute une minute. (60 * 1000 millisecondes)

$('.frdtPicker').datetimepicker({
        onClose: function(dateText, inst) {
            var endDateTextBox = $('.todtPicker');
            if (endDateTextBox.val() != '') {
                var testStartDate = new Date(dateText);
                var testEndDate = new Date(endDateTextBox.val());
                if (testStartDate > testEndDate) {

                    var testStartDate = new Date(dateText).getTime() + 60000;
                    var testStartDate2 = new Date(testStartDate); 

                    endDateTextBox.datetimepicker('setDate', (new Date(testStartDate2)));
                }
            }
            else {
                var testStartDate = new Date(dateText).getTime() + 60000;
                var testStartDate2 = new Date(testStartDate);
                endDateTextBox.datetimepicker('setDate', (new Date(testStartDate2)));
            }
            $('.frdtPicker').val(dateText); //endDateTextBox.val());

        },
        onSelect: function(selectedDateTime) {
            var start = $(this).datetimepicker('getDate');
            $('.todtPicker').datetimepicker('option', 'minDate', new Date(start.getTime()));
        }
    });
carlos martini
la source
1

Jetez un œil au plugin JavaScript suivant.

Calendrier Javascript avec date et heure

Je l'ai fait pour être aussi simple que possible. mais il en était encore à ses débuts. Faites-moi savoir les commentaires afin que je puisse l'améliorer.

Joe
la source
1

Pas jQuery, mais cela fonctionne bien pour un calendrier avec le temps: sélecteur de date et heure JavaScript .

Je viens de lier l'événement click pour le faire apparaître:

$(".arrival-date").click(function() {
    NewCssCal($(this).attr('id'), 'mmddyyyy', 'dropdown', true, 12);
});
bigspotteddog
la source
1
Mise à jour du lien - ils l'ont déplacé.
bigspotteddog
J'utilise celui-ci depuis quelques années, bien que je l'ai invoqué différemment (donc je ne reconnais pas votre code). Je migre vers DatePicker de jquery, car la forêt tropicale semble un peu longue dans la dent.
un codeur
0

Je fais une fonction comme celle-ci:

function getTime()
{
    var date_obj = new Date();
    var date_obj_hours = date_obj.getHours();
    var date_obj_mins = date_obj.getMinutes();
    var date_obj_second = date_obj.getSeconds();

    var date_obj_time = "'"+date_obj_hours+":"+date_obj_mins+":"+date_obj_second+"'";
    return date_obj_time;
}

Ensuite, j'utilise le sélecteur de date jQuery UI comme ceci:

$("#selector").datepicker( "option", "dateFormat", "yy-mm-dd "+getTime()+"" );

Donc, j'obtiens la valeur comme ceci: 2010-10-31 12:41:57

dhaniBinZain
la source
parfois, nous devons déterminer l'heure (sans utiliser la fonction getTime)
bungdito