2016-01-08 6 views
11

Ich habe ein Feld, das benötigt wird, um ein Jahr vom Benutzer zu sammeln (d. H. Ein Datum mit einer Jahresauflösung - zur Vereinfachung der Speicherung würde ich lieber einen tatsächlichen Datumswert und nicht eine Zahl speichern).Kann ich einen HTML-Eingabetyp "date" verwenden, um nur ein Jahr zu sammeln?

Ich würde gerne die Datumseingabe UI von modernen Browsern oder webshims unterstützt, weil es schön ist und gut mit modernen Plattformen spielt. Ich konnte nicht herausfinden, wie die Benutzeroberfläche nur das Jahr anzeigt. Irgendwelche Ideen?

Wenn es keine Plattformunterstützung gibt, hätte ich gerne eine UI wie Sie können see here, wenn Sie auf "Vorschau" klicken und dann oben auf das Widget ein paar Mal, außer umgekehrt: wenn Sie zuerst Wenn Sie auf die Eingabe klicken, erhalten Sie ein Widget mit einer Liste von Dekaden. Anschließend können Sie einen Drilldown durchführen, um das Jahr auszuwählen. Anschließend schließt sich die Benutzeroberfläche.

+0

Nein, du kannst nicht, es unterstützt nicht nur Jahr, also brauchst du ein Skript, wie jQuery oder den Webshim Link, den du hast, der nur Jahr anzeigt. – LGSon

+0

Überprüfen Sie diesen Beitrag für ein paar gute jQuery Beispiel: http://Stackoverflow.com/questions/13528623/jquery-ui-datepicker-to-show-year-only – LGSon

+0

Welche wahrscheinlich macht diese Frage ein Duplikat von: http: // stackoverflow.com/questions/30085591/focus-month-or-year-of-html5-inputtype-date ... Stimmen Sie zu? ... und wenn jQuery eine Option ist, würde der Link meines ersten Kommentars der Betrogene sein? – LGSon

Antwort

6

Nein, Sie können nicht, es unterstützt nicht nur Jahr, also zu tun, dass Sie ein Skript benötigen, wie jQuery oder der Webshim-Link, den Sie haben, der Jahr nur zeigt.


Wenn jQuery eine Option wäre, hier ist ein entlehnt Sibu:

$(function() { 
    $("#datepicker").datepicker({dateFormat: 'yy'}); 
    });​ 
CSS 

.ui-datepicker-calendar { 
    display: none; 
} 

Src: https://stackoverflow.com/a/13528855/2827823

Src Geige: http://jsfiddle.net/vW8zc/

Hier ist an updated fiddle, ohne die Schaltflächen "Monat" und "Vorherige/Nächste"


Wenn Bootstrap ist eine Option, check this link, haben sie ein Layout, wie Sie wollen.

+0

Blick auf die resultierende Schnittstelle, seine Art von schrecklich (für ein Jahr Picker sowieso). Die einzige Aktion, die Sie tun können, ist, durch die Monate zu blättern - was Sie schließlich zu einem bestimmten Jahr bringen wird, aber wenn ich einen Benutzer frage, was sein Geburtsjahr ist, wird es 12 Mal mehr Klicks haben, als ich es mir gewünscht hätte. Eine Benutzeroberfläche wie die "view 0" von webshims 'date picker ist viel vorzuziehen (obwohl ich nicht herausfinden konnte, wie die webshims UI beendet werden kann, wenn der Benutzer ein Jahr auswählt). Momentan ist meine andere Lösung ein Drop-Down mit allen Jahren seit 1900 mit Werten, die auf "1-1-YYYY" gesetzt sind, also muss ich diese UI schlagen. – Guss

+0

@Guss Wäre das besser: http://jsfiddle.net/vW8zc/306/ – LGSon

+0

@Guss Und hier ist eine ohne die vorherigen/nächsten Pfeile auch: http://jsfiddle.net/vW8zc/307/ .. Wenn etwas gut genug ist, lass es mich wissen und ich aktualisiere meine Antwort – LGSon

0

Ich versuche damit, keine Änderungen an der CSS.

$(function() { 
 
    $('#datepicker').datepicker({ 
 
     changeYear: true, 
 
     showButtonPanel: true, 
 
     dateFormat: 'yy', 
 
     onClose: function(dateText, inst) { 
 
      var year = $("#ui-datepicker-div .ui-datepicker-year :selected").val(); 
 
      $(this).datepicker('setDate', new Date(year, 1)); 
 
     } 
 
    }); 
 
    
 
    $("#datepicker").focus(function() { 
 
     $(".ui-datepicker-month").hide(); 
 
     $(".ui-datepicker-calendar").hide(); 
 
    }); 
 
    
 
});
<p>Date: <input type="text" id="datepicker" /></p>

Example code jsfiddle

+0

Eine JavaScript-Lösung ist keine Antwort auf diese Frage. – Blackbam

19

Nein, Sie können nicht, aber Sie möchten Eingabetypnummer als Behelfslösung verwenden. Schauen Sie sich das folgende Beispiel:

<input type="number" min="1900" max="2099" step="1" value="2016" /> 
+0

Einfach und einfach. Warum habe ich nicht daran gedacht! Sollte die gewählte Antwort sein –

1

Es input type month in HTML5 ist, den Monat und Jahr auswählen kann. Monatsauswahl funktioniert mit Autocomplete.

Überprüfen Sie das Beispiel in JSFiddle.

+0

Danke für die Antwort, mir war nicht bewusst, dass "Typ = Monat" eine Option in HTML5 ist (Ich habe einen Link zur Spezifikation hinzugefügt). Github bietet keine "Schuldzuweisung" für große Dateien, so dass ich nicht herausfinden kann, wann es hinzugefügt wurde. Abgesehen davon, dass es keine gute Lösung für meine Bedürfnisse ist, hat es mich inspiriert, ein Problem auf dem Standard zu öffnen, um auch den Typ "Jahr" hinzuzufügen: https://github.com/whatwg/html/issues/3281 . Wenn Sie sich auch für eine solche Funktion interessieren (in den nächsten 5 Jahren in Browsern verfügbar sein ;-)), stimmen Sie bitte ab. – Guss

+0

Fertig. Auf GitHub aufgezogen. – Wallkicker

Verwandte Themen