Hier ist meine Lösung (ähnlich der Antwort von John Vance):
Gehen Sie zuerst hierher und rufen Sie eine Funktion zum Erkennen mobiler Browser auf.
http://detectmobilebrowsers.com/
Sie haben viele verschiedene Möglichkeiten, um zu erkennen, ob Sie mobil sind. Suchen Sie also eine, die mit Ihrer Verwendung funktioniert.
Ihre HTML-Seite (Pseudocode):
If Mobile Then
<input id="selling-date" type="date" placeholder="YYYY-MM-DD" max="2999-12-31" min="2010-01-01" value="2015-01-01" />
else
<input id="selling-date" type="text" class="date-picker" readonly="readonly" placeholder="YYYY-MM-DD" max="2999-12-31" min="2010-01-01" value="2015-01-01" />
JQuery:
$( ".date-picker" ).each(function() {
var min = $( this ).attr("min");
var max = $( this ).attr("max");
$( this ).datepicker({
dateFormat: "yy-mm-dd",
minDate: min,
maxDate: max
});
});
Auf diese Weise können Sie weiterhin native Datumsauswahlfunktionen in Mobilgeräten verwenden, während Sie die minimalen und maximalen Datumsangaben in beide Richtungen festlegen.
Das Feld für Nicht-Mobilgeräte sollte nur gelesen werden, da ein mobiler Browser wie Chrome für iOS "eine Desktop-Version anfordert", die mobile Überprüfung umgehen kann und Sie dennoch verhindern möchten, dass die Tastatur angezeigt wird.
Wenn das Feld jedoch schreibgeschützt ist, kann es für einen Benutzer so aussehen, als könne er das Feld nicht ändern. Sie können dies beheben, indem Sie das CSS so ändern, dass es nicht schreibgeschützt ist (dh die Rahmenfarbe in Schwarz ändern). Wenn Sie jedoch das CSS nicht für alle Eingabe-Tags ändern, fällt es Ihnen schwer, das Erscheinungsbild konsistent zu halten Browser.
Um dies zu umgehen, füge ich der Datumsauswahl einfach eine Kalenderbildschaltfläche hinzu. Ändern Sie einfach Ihren JQuery-Code ein wenig:
$( ".date-picker" ).each(function() {
var min = $( this ).attr("min");
var max = $( this ).attr("max");
$( this ).datepicker({
dateFormat: "yy-mm-dd",
minDate: min,
maxDate: max,
showOn: "both",
buttonImage: "images/calendar.gif",
buttonImageOnly: true,
buttonText: "Select date"
});
});
Hinweis: Sie müssen ein geeignetes Bild finden.