Wybieranie daty / godziny jQuery [zamknięte]

245

Szukałem porządnej wtyczki jQuery, która poradziłaby sobie zarówno z datami, jak i godzinami. Podstawowy interfejs użytkownika DatePickerjest świetny, ale niestety muszę też mieć czas.

Znalazłem kilka hacków, by DatePicker działał z czasem, ale wszystkie wydają się dość nieeleganckie, a Google nie pokazuje nic fajnego.

Czy istnieje dobra wtyczka jQuery do wybierania dat i godzin w jednym kontrolce interfejsu użytkownika z użytecznym interfejsem?

Chelsea
źródło
Jestem prawie pewien, że mój przykład jest nieco mniej mylący i bardziej przyjazny dla użytkownika. Są wady i zalety obu.
Michael Stone

Odpowiedzi:

251

Zdecydowanie najładniejszą i najprostszą opcją wybierania DateTime jest http://trentrichardson.com/examples/timepicker/ .

Jest to rozszerzenie Datepicker interfejsu użytkownika jQuery, więc będzie obsługiwać te same motywy, a także działa bardzo podobnie, podobna składnia itp. Powinno to być spakowane z imo interfejsu użytkownika jQuery.

Xordon
źródło
3
Korzystałem z tego i UWIELBIAM to.
Sonny,
3
Podoba mi się to, ale wciąż jest bardzo Buggy.
Alastair Pitts,
11
„BARDZO buggy”? Ledwie. Używam go w kodzie produkcyjnym i już od jakiegoś czasu. Jest również aktywnie rozwijany.
Sonny
7
@ Sonny: czy używasz go w produkcji, nie ma wpływu na to, czy jest wadliwy, czy nie. Być może po prostu nie widziałeś jego błędów, ponieważ nie robisz z nim rzeczy, które je ujawniają, być może Alastair. Z drugiej strony, nie przedstawił żadnych dowodów na swoje roszczenie, więc nie jestem skłonny brać tego zbyt poważnie ...
iconoclast
18
Moim największym problemem z tą wtyczką jest interfejs użytkownika: dlaczego miałbym chcieć używać suwaków, w tym poziomych !, aby wprowadzić czas !? Wygląda i czuje się bardzo niezręcznie. Tak wiele razy miałem doświadczenie z suwakami, w których nie mogę dostać się do żądanej liczby (wielokrotnie przechodzę nieco później, a potem nieco poniżej) i ostatecznie to wpisuję. Klawiatura jest zwykle najłatwiejszym sposobem na wprowadzenie dokładnej wartości liczbowej. Jeśli potrzebujesz metody wprowadzania wizualnego, zegar jest normalny dla czasu, a nie suwak. Trudniejsze do zaimplementowania, ale może być przydatne (o ile możliwe jest także wprowadzanie z klawiatury).
iconoclast,
46

@David, dzięki za zalecenie! @fluid_chelsea, właśnie wydałem Any + Time (TM) wersja 3.x, która używa jQuery zamiast Prototype i ma znacznie ulepszony interfejs, więc mam nadzieję, że teraz spełnia twoje potrzeby:

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

Wszelkie problemy, daj mi znać poprzez link komentarza na mojej stronie!

Andrew M. Andrews III
źródło
6
Any + Time (TM) wersja 4.x jest już dostępna! Nowa wersja obsługuje strefy czasowe (znajdź to w dowolnym innym selektorze!), A także selektory / łańcuchy jQuery, łatwe usuwanie (unikaj wycieków pamięci!) I wiele innych ulepszeń. Podwieź go, a jeśli masz jakieś problemy lub sugestie, daj mi znać za pośrednictwem strony z komentarzami na mojej stronie.
Andrew M. Andrews III,
4
Any + Time wygląda całkiem gładko. Lubię to.
Zack Peterson
Właśnie zaimplementowałem AnyTime w kilka minut w aplikacji Rails. Działa świetnie.
Gwyn Morfey,
Właśnie wybrałem selektor AnyTime jako mojego wyboru dla mojej aplikacji JSF! Dzięki za fajny produkt, kontynuuj dobrą pracę!
Arg.
Any + Time dołącza nowy ukryty div dla interfejsu użytkownika dla każdego wejścia Any + Time (w przeciwieństwie do datepicker interfejsu użytkownika jQUery, który ponownie korzysta z ukrytego interfejsu div), co znacznie obniża wydajność w źle zaprojektowanym MSIE6. Więc nie używaj Any + Time, jeśli potrzebujesz obsługi MSIE6!
Eduardo
14

Moim zdaniem daty i godziny powinny być traktowane jako dwa osobne pola wprowadzania, aby były najbardziej użyteczne i wydajne dla użytkownika. Pozwól użytkownikowi wprowadzać jedną rzecz na raz, to dobra zasada, imho.

Korzystam z podstawowego interfejsu użytkownika DatePicker i następującego selektora czasu.

Ten jest inspirowany tym, którego używa Kalendarz Google:

jQuery timePicker :
przykłady: http://labs.perifer.se/timedatepicker/
projekt na github: https://github.com/perifer/timePicker

Uważam, że jest najlepszy spośród wszystkich alternatyw. Użytkownik może wprowadzać szybko, wygląda czysto, jest prosty i pozwala wprowadzić określone czasy z dokładnością do minuty.

PS: Moim zdaniem: suwaki (używane przez niektóre alternatywne selektory czasu) wykonują zbyt wiele kliknięć i wymagają precyzji myszy od użytkownika (co spowalnia wprowadzanie danych).

Magne
źródło
DatePicker rdzenia interfejsu użytkownika: jqueryui.com/demos/datepicker
Magne
To zabija korzyści wiążące model C # MVC dla tego pola
Serj Sagan
13

Moje najlepsze doświadczenia z datownikiem to prototyp AnyTime . Wiem, że to nie jest jQuery, ale może być warte kompromisu. Nie znam absolutnie żadnego prototypu i nadal jest wystarczająco łatwa do pracy.

Jedno zastrzeżenie, które znalazłem: nie jest kompatybilne z niektórymi przeglądarkami. Oznacza to, że nie działał z nowszą wersją prototypu w Chrome.

David Berger
źródło
1
Gdybym mógł użyć prototypu, nie byłby to problem, niestety utknęliśmy w jQuery dla tej aplikacji.
Chelsea,
7
Tylko aktualizacja - AnyTime 3 działa teraz z jQuery.
Jaxidian
Nie myślałem o tym od miesięcy. Ale mój osobisty projekt chciał trochę zaktualizować i byłem prawie gotowy rzucić trochę jquery. Pomyślałem, że zastąpię datepicker, gdy jestem przy nim, ponieważ nie potrzebowałem wszystkich funkcji Any + Time i pomyślałem, że równie dobrze mogę przejść na wszystkie jQuery. I bam! Natrafiam na to. Niesamowite wyczucie czasu.
David Berger
Fajnie, chociaż selektor roku (kliknięcie <lub>) jest dla mnie kludgy.
koder
7

Aby dodać do informacji tutaj, The Fluid Project ma ładny napis wiki, który omawia dużą liczbę datowników i / lub selektorów czasu tutaj .

Jaxidian
źródło
4

Niedawno to zbadałem i jeszcze nie znalazłem przyzwoitego selektora dat, który zawiera również porządny selektor czasu. Skończyło się to na niesamowitym DatePicker firmy Eyecon , z dwoma prostymi listami rozwijanymi na czas. Kusiło mnie jednak, aby użyć Timepickr.js , wygląda to na naprawdę miłe podejście.

deceze
źródło
3

Natrafiłem na ten sam problem. Właściwie opracowałem programowanie po stronie serwera, ale zrobiłem szybkie wyszukiwanie, aby spróbować ci pomóc i znalazłem to.

Wydaje się w porządku, nie patrzyłem zbytnio na źródło, ale wydaje się być czysto JavaScript.

Spójrz:

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

Oto link do strony demonstracyjnej:

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

powodzenia

Michael Stone
źródło
Używam tego od kilku lat. Trochę długo robi się w zębie, ale działa.
koder
1

To jest pewien kod, którego używam, aby użytkownik wybrał jeden wybierak danych, ustawił datę i godzinę, a drugi wybrał jeden minutę do tego czasu.

Potrzebowałem tego do niestandardowej kontroli leków ....

Tak czy inaczej, pomyślałem, że może to pomóc komuś innemu, ponieważ nie mogłem znaleźć odpowiedzi gdziekolwiek w Internecie ...

(przynajmniej niepełna odpowiedź)

Należy pamiętać, że 60000 dodane, dodaje jedną minutę. (60 * 1000 milisekund)

$('.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
źródło
1

Nie jQuery, ale działa dobrze dla kalendarza z czasem: JavaScript Date Time Picker .

Właśnie związałem zdarzenie kliknięcia, aby je wyświetlić:

$(".arrival-date").click(function() {
    NewCssCal($(this).attr('id'), 'mmddyyyy', 'dropdown', true, 12);
});
Bigspotteddog
źródło
1
Zaktualizowałem link - przenieśli go.
bigspotteddog 12.12.12
Używam tego od kilku lat, ale wywoływałem go inaczej (dlatego nie rozpoznałem po twoim kodzie). Przeprowadzam migrację do DatePicker jquery, ponieważ las deszczowy wygląda trochę długo w zębie.
koder
0

Wykonuję jedną taką funkcję:

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;
}

Następnie używam datepicker interfejsu użytkownika jQuery w następujący sposób:

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

Tak więc otrzymuję taką wartość: 2010-10-31 12:41:57

dhaniBinZain
źródło
czasami musimy ustalić czas (nie używając funkcji
getTime