Oto moje rozwiązanie (podobne do odpowiedzi Johna Vance'a):
Najpierw przejdź tutaj i uzyskaj funkcję wykrywania przeglądarek mobilnych.
http://detectmobilebrowsers.com/
Mają wiele różnych sposobów wykrywania, czy korzystasz z telefonu komórkowego, więc znajdź taki, który działa z tym, czego używasz.
Twoja strona HTML (pseudokod):
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
});
});
W ten sposób możesz nadal korzystać z natywnych selektorów daty w telefonie komórkowym, jednocześnie ustawiając minimalną i maksymalną datę w obie strony.
Pole dla urządzeń innych niż mobilne powinno być tylko do odczytu, ponieważ jeśli przeglądarka mobilna, taka jak chrome dla ios, „żąda wersji na komputer”, może obejść sprawdzenie urządzenia mobilnego, a Ty nadal chcesz zapobiec wyświetlaniu klawiatury.
Jednak jeśli pole jest tylko do odczytu, może wyglądać na użytkownika, jakby nie mógł go zmienić. Możesz to naprawić, zmieniając CSS, aby wyglądał, jakby nie był tylko do odczytu (tj. Zmień kolor obramowania na czarny), ale jeśli nie zmienisz CSS dla wszystkich tagów wejściowych, trudno będzie zachować spójny wygląd przeglądarki.
Aby to zrozumieć, po prostu dodaję przycisk kalendarza do selektora dat. Po prostu zmień trochę swój kod 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,
showOn: "both",
buttonImage: "images/calendar.gif",
buttonImageOnly: true,
buttonText: "Select date"
});
});
Uwaga: będziesz musiał znaleźć odpowiedni obraz.