Używam selektora daty jQuery do wyświetlania kalendarza w całej mojej aplikacji. Chcę wiedzieć, czy mogę go użyć do wyświetlenia miesiąca i roku (maj 2010), a nie kalendarza?
374
Używam selektora daty jQuery do wyświetlania kalendarza w całej mojej aplikacji. Chcę wiedzieć, czy mogę go użyć do wyświetlenia miesiąca i roku (maj 2010), a nie kalendarza?
Odpowiedzi:
Oto hack (zaktualizowany o cały plik .html):
EDYCJA jsfiddle dla powyższego przykładu: http://jsfiddle.net/DBpJe/7755/
EDYCJA 2 Dodaje wartość roku miesiąca do pola wprowadzania tylko po kliknięciu przycisku Gotowe. Pozwala również usunąć wartości pól wejściowych, co nie jest możliwe w powyższym polu http://jsfiddle.net/DBpJe/5103/
EDYCJA 3 zaktualizowana Lepsze rozwiązanie w oparciu o rozwiązanie rexwolf w dół.
http://jsfiddle.net/DBpJe/5106
źródło
$(this).val($.datepicker.formatDate('MM yy', new Date(year, month, 1)));
#ui-datepicker-div.noCalendar .ui-datepicker-calendar, #ui-datepicker-div.noCalendar .ui-datepicker-header a {display: none;} #ui-datepicker-div.noCalendar .ui-datepicker-header .ui-datepicker-title{width: 100%; margin: 0;}
A następnie użyć Javascript do manipulowania zachowaniem:$("#ui-datepicker-div").addClass('noCalendar');
Ten kod działa dla mnie bezbłędnie:
Dane wyjściowe to:
źródło
@Ben Koehler , to prefekt! Wprowadziłem niewielką modyfikację, dzięki czemu użycie jednego wystąpienia selektora dat więcej niż raz działa zgodnie z oczekiwaniami. Bez tej modyfikacji data jest przetwarzana niepoprawnie, a poprzednio wybrana data nie jest podświetlona.
źródło
Powyższe odpowiedzi są całkiem dobre. Moją jedyną skargą jest to, że nie można wyczyścić wartości po jej ustawieniu. Wolę też podejście typu rozszerzenie-jquery-jak-plugin.
Działa to dla mnie idealnie:
Następnie wywołaj tak:
źródło
To rozwiąże problem =) Ale chciałem mieć format czasu rrrr-mm
Próbowałem tylko w FF4
źródło
Miałem tę samą potrzebę dzisiaj i znalazłem to na github, współpracuję z jQueryUI i mam wybór miesiąca zamiast dni w kalendarzu
https://github.com/thebrowser/jquery.ui.monthpicker
źródło
Oto, co wymyśliłem. Ukrywa kalendarz bez potrzeby stosowania dodatkowego bloku stylu i dodaje wyraźny przycisk, aby poradzić sobie z problemem braku możliwości wyczyszczenia wartości po kliknięciu wejścia. Działa również ładnie z wieloma użytkownikami miesięcznymi na tej samej stronie.
HTML:
JavaScript:
źródło
Potrzebowałem selektora miesiąca / roku dla dwóch pól (od & do), a kiedy jedno zostało wybrane, maksymalne / minimalne były ustawione na drugim ... daty biletów lotniczych. Miałem problemy z ustawieniem maksymalnej i minimalnej ... daty drugiego pola zostałyby usunięte. Dzięki kilku z powyższych postów ... w końcu to rozgryzłem. Musisz ustawić opcje i daty w bardzo określonej kolejności.
Zobacz to skrzypce, aby uzyskać pełne rozwiązanie: Wybór miesiąca / roku @ JSFiddle
Kod:
Dodaj to również do bloku stylu, jak wspomniano powyżej:
źródło
Połączyłem wiele powyższych dobrych odpowiedzi i doszedłem do tego:
Okazało się, że działa, ale napotyka wiele błędów, więc byłem zmuszony do łatania w kilku miejscach datepicker:
patch1: w _showDatepicker: wygładza ukrywanie;
patch2: w _checkOffset: aby poprawić pozycjonowanie selektora miesiąca (w przeciwnym razie, gdy pole znajduje się na dole przeglądarki, kontrola przesunięcia jest wyłączona);
patch3: w polu onClose of _hideDatepicker: w przeciwnym razie po zamknięciu pola daty będą migać przez bardzo krótki czas, co jest bardzo denerwujące.
Wiem, że moja poprawka była daleka od dobrej, ale na razie działa. Mam nadzieję, że to pomoże.
źródło
Dodaj jeszcze jedno proste rozwiązanie
http://jsfiddle.net/tmnasim/JLydp/
Funkcje :
------------------------------------
inne działające rozwiązanie dobrze dla datepicker i monthpicker na tej samej stronie: (również uniknij błędu wielokrotnego kliknięcia na poprzednim przycisku w IE, który może wystąpić, jeśli użyjemy funkcji fokusa)
JS link do skrzypiec
źródło
Czy to tylko ja, czy to nie działa tak, jak powinno w IE (8)? Data zmienia się po kliknięciu Gotowe, ale datepicker otwiera się ponownie, aż faktycznie klikniesz gdzieś na stronie, aby stracić skupienie na polu wprowadzania ...
Chcę rozwiązać ten problem.
źródło
Jeśli szukasz próbnika miesiąca, wypróbuj ten jquery.mtz.monthpicker
To działało dla mnie dobrze.
źródło
Podobnie jak wiele innych, napotkałem wiele problemów, próbując to zrobić, i tylko kombinacja opublikowanych rozwiązań, a ostatecznie duży hack, aby uczynić to idealnym, dało mi rozwiązanie.
Problemy z innymi rozwiązaniami w tym wątku, które próbowałem:
W końcu znalazłem sposób na rozwiązanie wszystkich tych problemów . Pierwsze cztery można naprawić, zachowując ostrożność w odniesieniu do sposobu wybierania datowników i osób wybierających miesiące w ich wewnętrznym kodzie, i oczywiście wykonując kilka ręcznych aktualizacji wybieraczy. Można to zobaczyć w przykładach tworzenia instancji u dołu. Piąty problem można rozwiązać, dodając niestandardowy kod do funkcji datepicker.
UWAGA: NIE musisz używać następujących skryptów Monthpicker, aby naprawić pierwsze trzy problemy w normalnym narzędziu datepicker. Po prostu użyj skryptu tworzenia wystąpień datepicker u dołu tego postu.
Teraz, aby użyć Monthpickers i naprawić ostatni problem, musimy oddzielić datepickers i Monthpickers. Moglibyśmy uzyskać jeden z niewielu dodatków jpuery-UI na miesiąc, ale niektórym brakuje elastyczności / zdolności lokalizacji, niektórym brakuje wsparcia animacji ... więc co robić? Rzuć swój „własny” z kodu datepicker! Daje to w pełni funkcjonalny moduł wyboru miesiąca, ze wszystkimi funkcjami modułu wyboru daty, bez wyświetlania dni.
Dostarczyłem skrypt js Monthpicker i towarzyszący mu skrypt CSS , używając metody opisanej poniżej, z kodem jQuery-UI v1.11.1. Po prostu skopiuj te fragmenty kodu do dwóch nowych plików, odpowiednio monthpicker.js i monthpicker.css.
Jeśli chcesz przeczytać o dość prostym procesie, za pomocą którego przekonwertowałem datepicker na monthpicker, przewiń w dół do ostatniej sekcji.
Teraz, aby dodać datepickers i monthpickers do strony!
Poniższe fragmenty kodu javascript działają z wieloma modułami wyboru daty i / lub miesiącami na stronie, bez wyżej wymienionych problemów! Naprawiono ogólnie za pomocą „$ (this)”. dużo :)
Pierwszy skrypt jest przeznaczony dla normalnego datepicker'a, a drugi dla „nowych” monthpickerów.
Skomentowane później , który pozwala utworzyć element do wyczyszczenia pola wejściowego, został skradziony z odpowiedzi Paula Richardsa.
Używam formatu „MM rr” w narzędziu Monthpicker i formatu „rr-mm-dd” w narzędziu datepicker, ale jest on w pełni kompatybilny ze wszystkimi formatami , więc możesz swobodnie używać dowolnego z nich. Po prostu zmień opcję „dateFormat”. Standardowe opcje „showButtonPanel”, „showAnim” i „yearRange” są oczywiście opcjonalne i można je dostosować do własnych życzeń.
Dodawanie datownika
Tworzenie wystąpienia Datepicker. Ten trwa od 90 lat do dziś. Pomaga zachować poprawność pola wejściowego, zwłaszcza jeśli ustawisz opcje defaultDate, minDate i maxDate, ale może to obsłużyć, jeśli tego nie zrobisz. Będzie działał z dowolnym wybranym formatem daty.
Dodanie selektora miesiąca
Dołącz plik monthpicker.js i plik monthpicker.css na stronie, z której chcesz korzystać z Monthpickers.
Tworzenie instancji Monthpicker Wartość pobrana z tego selektora miesięcy jest zawsze PIERWSZYM dniem wybranego miesiąca. Rozpoczyna się w bieżącym miesiącu i waha się od 100 lat temu i 10 lat w przyszłość.
Otóż to! To wszystko, czego potrzebujesz, aby wybrać miesięcznik.
Nie mogę sprawić, aby jsfiddle z tym działało, ale działa dla mnie w moim projekcie ASP.NET MVC. Po prostu zrób to, co zwykle robisz, aby dodać datepicker do swojej strony i dołączyć powyższe skrypty, prawdopodobnie zmieniając selektor (czyli $ („# MyMonthTextBox”)) na coś, co działa dla Ciebie.
Mam nadzieję, że to komuś pomoże.
Odnośniki do pastebins dla niektórych dodatkowych ustawień wyboru daty i miesiąca:
Monthpicker działa na ostatni dzień miesiąca . Datą otrzymaną z tego selektora miesiąca będzie zawsze ostatni dzień miesiąca.
Dwóch współpracujących członków miesiąca ; „początek” działa pierwszego dnia miesiąca, a „koniec” działa ostatniego miesiąca. Oba są wzajemnie ograniczone, więc wybranie miesiąca „końca”, który jest przed wybranym miesiącem „początku”, zmieni „początek” na ten sam miesiąc co „koniec”. I wzajemnie. OPCJONALNIE: Wybierając miesiąc przy „początku”, „minDate” przy „końcu” jest ustawiany na ten miesiąc. Aby usunąć tę funkcję, skomentuj jeden wiersz w onClose (przeczytaj komentarze).
Dwóch współpracujących datepickerów ; Oba są wzajemnie ograniczone, więc wybranie daty „końca”, która jest wcześniejsza niż wybrana data „początku”, zmieni „początek” na ten sam miesiąc, co „koniec”. I wzajemnie. OPCJONALNIE: Wybierając datę przy „początku”, „minDate” przy „końcu” jest ustawiane na tę datę. Aby usunąć tę funkcję, skomentuj jeden wiersz w onClose (przeczytaj komentarze).
Jak zmieniłem DatePicker na MonthPicker
Wziąłem cały kod javascript z jquery-ui-1.11.1.js odnoszący się do ich datepicker, wkleiłem go do nowego pliku js i zastąpiłem następujące ciągi:
Następnie usunąłem część pętli for, która tworzy cały div div ui-datepicker-calendar (div, który inne rozwiązania ukrywają za pomocą CSS). Można to znaleźć w _generateHTML: function (inst).
Znajdź linię, która mówi:
Oznacz wszystko od zamykającego tagu div, aż do (i nie wliczając) linii, w której jest napisane:
Teraz będzie nieszczęśliwy, ponieważ musimy zamknąć niektóre rzeczy. Po tym zamykającym tagu div z poprzedniej strony dodaj:
Kod powinien być teraz ładnie połączony. Oto fragment kodu pokazujący, z czym powinieneś skończyć:
Następnie skopiowałem / wkleiłem kod z jquery-ui.css dotyczący datepickers do nowego pliku CSS i zastąpiłem następujące ciągi:
źródło
po przekopaniu witryny jQueryUI.com do datepicker, oto mój wniosek i odpowiedź na twoje pytanie.
Po pierwsze, odpowiedziałbym „ nie” na twoje pytanie. Nie można używać narzędzia wyboru jQueryUI do wybierania tylko miesiąca i roku. To nie jest obsługiwane. Nie ma w tym celu żadnej funkcji zwrotnej.
Ale możesz zhakować go, aby wyświetlał tylko miesiąc i rok, używając css do ukrywania dni itp. I myślę, że to nie będzie miało sensu, ponieważ musisz kliknąć daty, aby wybrać datę.
Mogę powiedzieć, że po prostu musisz użyć innego datownika. Jak sugerował Roger.
źródło
Miałem problem z wybieraniem dat zmieszanym z wybieraczem miesiąca. Tak rozwiązałem.
źródło
Jeśli ktoś tego chce również w przypadku wielu kalendarzy, nie jest bardzo trudno dodać tę funkcjonalność do interfejsu użytkownika jquery. z minimalnym wyszukiwaniem:
dodaj to przed x
Szukaj
i zastąp go
szukaj również
zastąp to
dla css powinieneś użyć:
po tym wszystko jest zrobione, po prostu przejdź do żądanych funkcji inicjujących datepicker i podaj ustawienie var
justMonth: true
jest tutaj kluczem :)źródło
Waht o: http://www.mattkruse.com/javascript/calendarpopup/
Wybierz przykład wyboru miesiąca
źródło
Wprowadziłem kilka udoskonaleń niemal doskonałej odpowiedzi BrianS powyżej:
Ponownie sformatowałem wartość ustawioną na show, ponieważ myślę, że w rzeczywistości sprawia, że jest ona nieco bardziej czytelna w tym przypadku (chociaż uwaga: używam nieco innego formatu)
Mój klient nie chciał kalendarza, więc dodałem dodatek pokaz / ukryj zajęcia, aby to zrobić bez wpływu na innych wybieraczy dat. Usunięcie klasy odbywa się na podstawie timera, aby uniknąć ponownego migania tabeli w miarę zanikania datownika, co wydaje się być bardzo zauważalne w IE.
EDYCJA: Pozostał jeden problem do rozwiązania w tym przypadku, że nie ma sposobu na opróżnienie dateppera - wyczyść pole i kliknij, a następnie wypełni się ponownie z wybraną datą.
EDYCJA 2: Nie udało mi się rozwiązać tego ładnie (tj. Bez dodania osobnego przycisku Wyczyść obok danych wejściowych), więc po prostu użyłem tego: https://github.com/thebrowser/jquery.ui.monthpicker - jeśli ktokolwiek może zdobądź standardowy interfejs użytkownika, aby zrobić to, co byłoby niesamowite.
Potrzebujesz również tej reguły stylu:
źródło
Podobała mi się odpowiedź @ user1857829 i jego „podejście z rozszerzaniem jquery-jak-wtyczka”. Właśnie dokonałem drobnej modyfikacji, aby podczas zmiany miesiąca lub roku w jakikolwiek sposób wybieracz faktycznie zapisał datę w polu. Przekonałem się, że podoba mi się to zachowanie po pewnym użyciu.
źródło
Miałem pewne trudności z zaakceptowaną odpowiedzią i żadnej innej nie można było wykorzystać przy minimalnym wysiłku jako podstawy. Postanowiłem więc ulepszyć najnowszą wersję akceptowanej odpowiedzi, dopóki nie spełni ona co najmniej minimalnych standardów kodowania / ponownego użycia JS.
Oto sposób rozwiązanie znacznie czystsze niż 3-ci (najnowszy) wydanie z Ben Koehler Zaakceptowanych odpowiedź „s. Ponadto będzie:
mm/yy
formatem, ale z każdym innym, w tym POMM yy
.datestr
,month
,year
etc zmienne.Sprawdź to:
A wszystko, czego potrzebujesz, to gdzieś w pobliżu następujący CSS:
Otóż to. Mam nadzieję, że powyższe pozwoli zaoszczędzić trochę czasu dla kolejnych czytelników.
źródło
Wiem, że to trochę spóźniona reakcja, ale dostałem ten sam problem kilka dni wcześniej i znalazłem fajne i płynne rozwiązanie. Najpierw znalazłem ten świetny wybór daty tutaj
Następnie właśnie zaktualizowałem klasę CSS (jquery.calendarPicker.css), która pochodzi z następującego przykładu:
Wtyczka uruchamia zdarzenie DateChanged po zmianie czegokolwiek, więc nie ma znaczenia, że nie klikniesz dnia (i pasuje ładnie jako selektor roku i miesiąca)
Mam nadzieję, że to pomoże!
źródło
Potrzebowałem też selektora miesiąca. Zrobiłem prosty z rocznikiem na nagłówku i 3 rzędami po 4 miesiące poniżej. Sprawdź to: Prosty próbnik miesięczny z jQuery .
źródło
Wypróbowałem różne rozwiązania tutaj dostarczone i działały dobrze, jeśli po prostu chciałeś kilka rozwijanych pozycji.
Najlepszy (z wyglądu itp.) „Próbnik” ( https://github.com/thebrowser/jquery.ui.monthpicker ) sugerowany tutaj jest w zasadzie kopią starej wersji jquery-ui datepicker z przepisem _generateHTML. Odkryłem jednak, że nie działa już ładnie z bieżącym jquery-ui (1.10.2) i miałem inne problemy (nie zamyka się przy esc, nie zamyka się przy otwieraniu innych widżetów, ma zakodowane style).
Zamiast próbować naprawić ten wybieracz miesięcy i zamiast ponowić próbę wykonania tego samego procesu za pomocą najnowszego wybieracza daty, postanowiłem podpiąć się do odpowiednich części istniejącego wybieracza daty.
Obejmuje to zastąpienie:
Ponieważ to pytanie jest nieco stare i dobrze już udzielono odpowiedzi, oto tylko przesłonięcie _selectDay, aby pokazać, jak to zrobiono:
Jak już wspomniano, jest to stare pytanie, ale uznałem je za przydatne, dlatego chciałem dodać opinię o alternatywnym rozwiązaniu.
źródło
dla Monthpicker, używając JQuery w wersji 1.7.2, mam następujący skrypt javascript, który właśnie to robi
$l("[id$=txtDtPicker]").monthpicker({
showOn: "both",
buttonImage: "../../images/Calendar.png",
buttonImageOnly: true,
pattern: 'yyyymm', // Default is 'mm/yyyy' and separator char is not mandatory
monthNames: ['Jan', 'Fev', 'Mar', 'Abr', 'Mai', 'Jun', 'Jul', 'Ago', 'Set', 'Out', 'Nov', 'Dez']
});
źródło
Dzięki za rozwiązanie Bena Koehlera.
Miałem jednak problem z wieloma instancjami datepickerów, niektóre z nich były potrzebne przy wyborze dnia. Rozwiązanie Bena Koehlera (w edycji 3) działa, ale ukrywa wybór dnia we wszystkich przypadkach. Oto aktualizacja rozwiązująca ten problem:
źródło
Użyj
onSelect
oddzwonienia i ręcznie usuń część roku i ręcznie ustaw tekst w poluźródło