Ich verwende die jQuery-Datumsauswahl, um den Kalender in meiner gesamten App anzuzeigen. Ich möchte wissen, ob ich damit den Monat und das Jahr (Mai 2010) und nicht den Kalender anzeigen kann.
374
Ich verwende die jQuery-Datumsauswahl, um den Kalender in meiner gesamten App anzuzeigen. Ich möchte wissen, ob ich damit den Monat und das Jahr (Mai 2010) und nicht den Kalender anzeigen kann.
Antworten:
Hier ist ein Hack (aktualisiert mit der gesamten HTML-Datei):
EDIT jsfiddle für das obige Beispiel: http://jsfiddle.net/DBpJe/7755/
BEARBEITEN 2 Fügt den Wert für das Monatsjahr nur beim Klicken auf die Schaltfläche Fertig zum Eingabefeld hinzu. Ermöglicht auch das Löschen von Eingabefeldwerten, was im obigen Feld http://jsfiddle.net/DBpJe/5103/ nicht möglich ist.
EDIT 3 aktualisiert Better Solution basierend auf der Lösung von rexwolf down.
http://jsfiddle.net/DBpJe/5106
quelle
$(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;}
Und dann verwenden Sie Javascript, um das Verhalten zu manipulieren:$("#ui-datepicker-div").addClass('noCalendar');
Dieser Code funktioniert für mich einwandfrei:
Ausgabe ist:
quelle
@ Ben Koehler , das ist Präfekt! Ich habe eine geringfügige Änderung vorgenommen, damit die Verwendung einer einzelnen Instanz der Datumsauswahl mehr als einmal wie erwartet funktioniert. Ohne diese Änderung wird das Datum falsch analysiert und das zuvor ausgewählte Datum wird nicht hervorgehoben.
quelle
Die obigen Antworten sind ziemlich gut. Meine einzige Beschwerde ist, dass Sie den Wert nicht löschen können, wenn er einmal eingestellt wurde. Außerdem bevorzuge ich den Extend-JQuery-Like-A-Plugin-Ansatz.
Das funktioniert perfekt für mich:
Dann rufe so auf:
quelle
Dies wird das Problem lösen =) Aber ich wollte das Zeitformat JJJJ-MM
Nur in FF4 ausprobiert
quelle
Ich hatte heute das gleiche Bedürfnis und fand es auf Github, arbeitet mit jQueryUI und hat eine Monatsauswahl anstelle von Tagen im Kalender
https://github.com/thebrowser/jquery.ui.monthpicker
quelle
Folgendes habe ich mir ausgedacht. Der Kalender wird ausgeblendet, ohne dass ein zusätzlicher Stilblock erforderlich ist, und es wird eine Schaltfläche zum Löschen hinzugefügt, um das Problem zu beheben, dass der Wert nicht gelöscht werden kann, sobald Sie auf die Eingabe klicken. Funktioniert auch gut mit mehreren Monthpickern auf derselben Seite.
HTML:
JavaScript:
quelle
Ich brauchte einen Monat / Jahr-Picker für zwei Felder (Von & Bis) und als eines ausgewählt wurde, wurde das Maximum / Min auf das andere eingestellt ... a la Picking Airline Ticketdaten. Ich hatte Probleme beim Einstellen von Max und Min ... die Daten des anderen Feldes wurden gelöscht. Dank einiger der oben genannten Beiträge ... habe ich es endlich herausgefunden. Sie müssen Optionen und Daten in einer ganz bestimmten Reihenfolge festlegen.
Die vollständige Lösung finden Sie in dieser Geige: Month / Year Picker @ JSFiddle
Code:
Fügen Sie dies auch einem Stilblock hinzu, wie oben erwähnt:
quelle
Ich habe viele der oben genannten guten Antworten kombiniert und komme zu folgendem Ergebnis:
Dies funktioniert nachweislich, ist aber mit vielen Fehlern konfrontiert, sodass ich gezwungen war, an mehreren Stellen des Datepickers zu patchen:
patch1: in _showDatepicker: um das Fell zu glätten;
patch2: in _checkOffset: um die Position der Monatsauswahl zu korrigieren (andernfalls ist die Versatzprüfung deaktiviert, wenn sich das Feld am unteren Rand des Browsers befindet);
patch3: in onClose von _hideDatepicker: Andernfalls blinken beim Schließen der Datumsfelder für einen sehr kurzen Zeitraum, was sehr ärgerlich ist.
Ich weiß, dass mein Fix alles andere als gut war, aber im Moment funktioniert es. Ich hoffe es hilft.
quelle
Fügen Sie eine weitere einfache Lösung hinzu
http://jsfiddle.net/tmnasim/JLydp/
Funktionen :
-------------------------------- eine
andere Lösung, die funktioniert Gut für Datepicker und Monthpicker auf derselben Seite: (Vermeiden Sie auch den Fehler des mehrfachen Klickens auf die vorherige Schaltfläche im IE, der auftreten kann, wenn wir die Fokusfunktion verwenden.)
JS-Geigenlink
quelle
Ist es nur ich oder funktioniert das nicht so, wie es in IE (8) sein sollte? Das Datum ändert sich, wenn Sie auf "Fertig" klicken, aber die Datumsauswahl wird wieder geöffnet, bis Sie tatsächlich irgendwo auf der Seite klicken, um den Fokus auf das Eingabefeld zu verlieren ...
Ich suche nach einer Lösung.
quelle
Wenn Sie nach einem Monats-Picker suchen, probieren Sie diesen jquery.mtz.monthpicker
Das hat bei mir gut funktioniert.
quelle
Wie viele andere bin ich bei dem Versuch, dies zu tun, auf zahlreiche Probleme gestoßen, und nur eine Kombination der veröffentlichten Lösungen und schließlich ein großer Hack, um es perfekt zu machen, hat mir eine Lösung gebracht.
Probleme mit anderen Lösungen in diesem Thread, die ich ausprobiert habe:
Ich habe endlich einen Weg gefunden, all diese Probleme zu beheben . Die ersten vier können einfach behoben werden, indem Sie sorgfältig darauf achten, wie Sie Ihre Datums- und Monatsauswahl in ihrem internen Code referenzieren, und natürlich einige manuelle Aktualisierungen Ihrer Auswahl vornehmen. Dies können Sie in den Instanziierungsbeispielen unten sehen. Das fünfte Problem kann behoben werden, indem den Datepicker-Funktionen benutzerdefinierter Code hinzugefügt wird.
HINWEIS: Sie müssen NICHT die folgenden Monthpicker-Skripte verwenden, um die ersten drei Probleme in Ihrem normalen Datepicker zu beheben. Verwenden Sie einfach das Datepicker-Instanziierungsskript am Ende dieses Beitrags.
Um nun Monthpicker zu verwenden und das letzte Problem zu beheben, müssen wir die Datepicker und die Monthpicker trennen. Wir könnten eines der wenigen jQuery-UI-Monthpicker-Addons da draußen bekommen, aber einige haben keine Flexibilität / Fähigkeit zur Lokalisierung, andere keine Animationsunterstützung ... also, was tun? Rollen Sie Ihre "eigenen" aus dem Datepicker-Code! Auf diese Weise erhalten Sie einen voll funktionsfähigen Monthpicker mit allen Funktionen des Datepickers, ohne dass Tage angezeigt werden müssen.
Ich habe ein Monthpicker-JS-Skript und das zugehörige CSS-Skript unter Verwendung der unten beschriebenen Methode mit dem Code jQuery-UI v1.11.1 geliefert. Kopieren Sie diese Code-Schnipsel einfach in zwei neue Dateien, monthpicker.js und monthpicker.css.
Wenn Sie mehr über den recht einfachen Vorgang erfahren möchten, mit dem ich den Datepicker in einen Monthpicker konvertiert habe, scrollen Sie zum letzten Abschnitt.
Fügen Sie nun die Datepicker und Monthpicker zur Seite hinzu!
Diese folgenden Javascript-Codefragmente funktionieren mit mehreren Datepickern und / oder Monthpickern auf der Seite, ohne die oben genannten Probleme! Im Allgemeinen durch Verwendung von '$ (this)' behoben. viel :)
Das erste Skript ist für einen normalen Datepicker und das zweite für die "neuen" Monthpicker.
Das auskommentierte .after , mit dem Sie ein Element zum Löschen des Eingabefelds erstellen können, wird aus Paul Richards 'Antwort gestohlen.
Ich verwende das "MM yy" -Format in meinem Monthpicker und das 'yy-mm-dd'-Format in meinem Datepicker, aber dies ist vollständig kompatibel mit allen Formaten , sodass Sie jedes gewünschte Format verwenden können. Ändern Sie einfach die Option 'dateFormat'. Die Standardoptionen 'showButtonPanel', 'showAnim' und 'yearRange' sind natürlich optional und können an Ihre Wünsche angepasst werden.
Hinzufügen eines Datepickers
Datepicker-Instanziierung. Dieser geht von vor 90 Jahren bis heute. Es hilft Ihnen, das Eingabefeld korrekt zu halten, insbesondere wenn Sie die Optionen defaultDate, minDate und maxDate festlegen. Wenn Sie dies nicht tun, kann es damit umgehen. Es funktioniert mit jedem von Ihnen ausgewählten dateFormat.
Hinzufügen eines Monthpickers
Fügen Sie die Datei monthpicker.js und die Datei monthpicker.css in die Seite ein, auf der Sie die monthpickers verwenden möchten.
Monthpicker-Instanziierung Der von diesem Monthpicker abgerufene Wert ist immer der ERSTE Tag des ausgewählten Monats. Beginnt im aktuellen Monat und reicht von vor 100 Jahren bis zu 10 Jahren in die Zukunft.
Das ist es! Das ist alles, was Sie brauchen, um einen Monatspicker zu machen.
Ich kann anscheinend keine jsfiddle damit arbeiten lassen, aber es funktioniert für mich in meinem ASP.NET MVC-Projekt. Tun Sie einfach das, was Sie normalerweise tun, um Ihrer Seite einen Datepicker hinzuzufügen, und integrieren Sie die oben genannten Skripte, möglicherweise indem Sie den Selektor (dh $ ("# MyMonthTextBox")) auf etwas ändern, das für Sie funktioniert.
Ich hoffe das hilft jemandem.
Links zu Pastebins für einige zusätzliche Datums- und Monatsauswahl-Setups:
Monthpicker arbeitet am letzten Tag des Monats . Das Datum, das Sie von diesem Monatspicker erhalten, ist immer der letzte Tag des Monats.
Zwei zusammenarbeitende Monthpicker ; 'start' arbeitet am ersten des Monats und 'end' arbeitet am letzten des Monats. Sie sind beide voneinander eingeschränkt. Wenn Sie also einen Monat am Ende auswählen, der vor dem ausgewählten Monat am Anfang liegt, ändert sich der Start in den gleichen Monat wie das Ende. Und umgekehrt. OPTIONAL: Wenn Sie einen Monat bei 'Start' auswählen, wird das 'minDate' bei 'Ende' auf diesen Monat gesetzt. Um diese Funktion zu entfernen, kommentieren Sie eine Zeile in onClose aus (lesen Sie die Kommentare).
Zwei zusammenarbeitende Datepicker ; Sie sind beide voneinander eingeschränkt. Wenn Sie also ein Datum am Ende auswählen, das vor dem ausgewählten Datum am Start liegt, wird "Start" in den gleichen Monat wie "Ende" geändert. Und umgekehrt. OPTIONAL: Wenn Sie ein Datum bei 'Start' auswählen, wird das 'minDate' bei 'Ende' auf dieses Datum gesetzt. Um diese Funktion zu entfernen, kommentieren Sie eine Zeile in onClose aus (lesen Sie die Kommentare).
Wie ich den DatePicker in einen MonthPicker verwandelt habe
Ich habe den gesamten Javascript-Code aus jquery-ui-1.11.1.js, der sich auf ihren Datepicker bezieht, in eine neue js-Datei eingefügt und die folgenden Zeichenfolgen ersetzt:
Dann habe ich den Teil der for-Schleife entfernt, der das gesamte UI-Datepicker-Kalender-Div erstellt (das Div, das andere Lösungen mithilfe von CSS verbergen). Dies kann in der _generateHTML: Funktion (inst) gefunden werden.
Suchen Sie die Zeile mit der Aufschrift:
Markieren Sie alles von nach dem schließenden div-Tag bis zur Zeile (und ohne diese ), in der steht:
Jetzt wird es unglücklich sein, weil wir einige Dinge schließen müssen. Fügen Sie nach dem Schließen des Div-Tags von zuvor Folgendes hinzu:
Der Code sollte jetzt gut zusammengefügt werden. Hier ist ein Code-Snippet, das zeigt, was Sie am Ende hätten haben sollen:
Dann habe ich den Code aus jquery-ui.css, der sich auf die Datepicker bezieht, in eine neue CSS-Datei kopiert / eingefügt und die folgenden Zeichenfolgen ersetzt:
quelle
Nachdem ich jQueryUI.com nach Datepicker durchsucht habe, ist hier meine Schlussfolgerung und Antwort auf Ihre Frage.
Erstens würde ich sagen , nicht auf Ihre Frage. Sie können jQueryUI datepicker nicht nur zum Auswählen von Monat und Jahr verwenden. Es wird nicht unterstützt. Dafür gibt es keine Rückruffunktion.
Aber Sie können es hacken, um nur Monat und Jahr anzuzeigen, indem Sie CSS verwenden, um die Tage usw. auszublenden. Und ich denke, es macht immer noch keinen Sinn, weil Sie die Daten klicken müssen, um ein Datum auszuwählen.
Ich kann sagen, dass Sie nur einen anderen Datepicker verwenden müssen. Wie das, was Roger vorgeschlagen hat.
quelle
Ich hatte das Problem der Datumsauswahl mit der Monatsauswahl gemischt. Ich habe es so gelöst.
quelle
Wenn jemand das auch für mehrere Kalender möchte, ist es nicht sehr schwierig, diese Funktionalität zu jquery ui hinzuzufügen. mit minimierter Suche nach:
füge dies vor x hinzu
suchen nach
und ersetzen Sie es durch
auch suchen nach
Ersetzen Sie es durch
Für CSS sollten Sie verwenden:
Danach gehen Sie einfach zu den gewünschten Datumsauswahl-Init-Funktionen und geben die Einstellung var ein
justMonth: true
ist der Schlüssel hier :)quelle
Waht über: http://www.mattkruse.com/javascript/calendarpopup/
Wählen Sie das Beispiel für die Monatsauswahl
quelle
Die oben fast perfekte Antwort von BrianS wurde ein paar Mal verfeinert:
Ich habe den angezeigten Wert neu eingestellt, weil ich denke, dass er in diesem Fall tatsächlich etwas besser lesbar ist (obwohl ich ein etwas anderes Format verwende).
Mein Kunde wollte keinen Kalender, deshalb habe ich eine On / Show / Hide-Klasse hinzugefügt, um dies zu tun, ohne andere Datepicker zu beeinflussen. Das Entfernen der Klasse erfolgt über einen Timer, um zu vermeiden, dass die Tabelle beim Ausblenden der Datumsauswahl wieder aufblitzt, was im IE sehr auffällig zu sein scheint.
BEARBEITEN: Ein Problem, das damit noch zu lösen ist, ist, dass es keine Möglichkeit gibt, den Datums-Picker zu leeren - löschen Sie das Feld und klicken Sie weg, und es wird mit dem ausgewählten Datum neu gefüllt.
EDIT2: Ich habe es nicht geschafft, dies gut zu lösen (dh ohne eine separate Schaltfläche zum Löschen neben der Eingabe hinzuzufügen), also habe ich nur Folgendes verwendet: https://github.com/thebrowser/jquery.ui.monthpicker - wenn jemand kann Holen Sie sich die Standard-Benutzeroberfläche, um es zu tun, das wäre erstaunlich.
Sie benötigen auch diese Stilregel:
quelle
Ich mochte die Antwort @ user1857829 und seinen "Extend-JQuery-Like-A-Plugin-Ansatz". Ich habe gerade eine kleine Änderung vorgenommen, damit der Kommissionierer das Datum in das Feld schreibt, wenn Sie Monat oder Jahr in irgendeiner Weise ändern. Ich fand, dass mir dieses Verhalten gefallen würde, nachdem ich es ein wenig benutzt hatte.
quelle
Ich hatte gewisse Schwierigkeiten mit der akzeptierten Antwort und keine andere konnte mit minimalem Aufwand als Basis verwendet werden. Daher habe ich beschlossen, die neueste Version der akzeptierten Antwort zu optimieren, bis sie mindestens den Mindeststandards für JS-Codierung / Wiederverwendbarkeit entspricht.
Hier ist eine viel sauberere Lösung als die 3. (neueste) Ausgabe der von Ben Koehler akzeptierten Antwort. Darüber hinaus wird es:
mm/yy
Format, sondern auch mit allen anderen, einschließlich der OPsMM yy
.datestr
,month
,year
etc Variablen.Hör zu:
Und alles andere, was Sie brauchen, ist das folgende CSS:
Das ist es. Hoffe, dass das oben Genannte Zeit für weitere Leser spart.
quelle
Ich weiß, dass es eine etwas späte Antwort ist, aber ich habe vor ein paar Tagen das gleiche Problem bekommen und eine schöne und reibungslose Lösung gefunden. Zuerst habe ich hier diese großartige Datumsauswahl gefunden
Dann habe ich gerade die CSS-Klasse (jquery.calendarPicker.css) aktualisiert, die mit dem folgenden Beispiel geliefert wird:
Das Plugin löst ein DateChanged-Ereignis aus, wenn Sie etwas ändern. Es spielt also keine Rolle, dass Sie nicht auf einen Tag klicken (und es passt gut als Jahr- und Monatsauswahl).
Ich hoffe es hilft!
quelle
Ich brauchte auch einen Monatspflücker. Ich habe eine einfache mit Jahr auf Kopf und 3 Zeilen von 4 Monaten unten gemacht. Probieren Sie es aus: Einfache Monatsauswahl mit jQuery .
quelle
Ich habe die verschiedenen hier angebotenen Lösungen ausprobiert und sie haben gut funktioniert, wenn Sie nur ein paar Dropdowns wollten.
Der beste (in Aussehen usw.) "Picker" ( https://github.com/thebrowser/jquery.ui.monthpicker) ), der hier vorgeschlagen wird, ist im Grunde eine Kopie einer alten Version von jquery-ui datepicker mit dem neu geschriebenen _generateHTML. Ich fand jedoch, dass es mit der aktuellen jquery-ui (1.10.2) nicht mehr gut funktioniert und hatte andere Probleme (schließt nicht auf esc, schließt nicht auf anderen Widget-Öffnungen, hat fest codierte Stile).
Anstatt zu versuchen, diesen Monthpicker zu reparieren und den gleichen Vorgang mit dem neuesten Datepicker erneut zu versuchen, habe ich mich an die relevanten Teile der vorhandenen Datumsauswahl gewöhnt.
Dies beinhaltet das Überschreiben von:
Da diese Frage etwas alt und bereits gut beantwortet ist, ist hier nur die _selectDay-Überschreibung, um zu zeigen, wie dies getan wurde:
Wie bereits erwähnt, ist dies eine alte Frage, aber ich fand sie nützlich und wollte Feedback mit einer alternativen Lösung hinzufügen.
quelle
Für einen Monthpicker mit JQuery v 1.7.2 habe ich das folgende Javascript, das genau das tut
$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']
});
quelle
Vielen Dank für die Lösung von Ben Koehler.
Ich hatte jedoch ein Problem mit mehreren Instanzen von Datepickern, von denen einige bei der Tagesauswahl benötigt wurden. Die Lösung von Ben Koehler (in Edit 3) funktioniert, verbirgt jedoch in allen Fällen die Tagesauswahl. Hier ist ein Update, das dieses Problem löst:
quelle
Verwenden Sie
onSelect
Rückruf und entfernen Sie den Jahresanteil manuell und legen Sie den Text im Feld manuell festquelle