Тож ось моє рішення (подібно до відповіді Джона Венса):
Спочатку перейдіть сюди та отримайте функцію виявлення мобільних браузерів.
http://detectmobilebrowsers.com/
Вони мають безліч різних способів виявити, чи перебуваєте ви на мобільному, тож знайдіть той, який працює з тим, що ви використовуєте.
Ваша HTML-сторінка (псевдокод):
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
});
});
Таким чином, ви все ще можете використовувати рідні селектори дат у мобільних пристроях, одночасно встановлюючи мінімальну та максимальну дати в будь-який спосіб.
Поле для немобільних пристроїв слід читати лише тому, що якщо мобільний браузер, такий як chrome для ios, "вимагає настільну версію", вони можуть обійти мобільну перевірку, і ви все одно хочете, щоб клавіатура не відображалася.
Однак, якщо поле лише для читання, воно може виглядати для користувача так, наче він не може змінити поле. Ви можете виправити це, змінивши CSS, щоб зробити вигляд, що він не лише для читання (тобто змінити колір межі на чорний), але якщо ви не зміните CSS для всіх вхідних тегів, вам буде важко підтримувати вигляд узгодженим браузери.
Щоб зрозуміти, що я просто додаю кнопку зображення календаря до засобу вибору дати. Просто трохи змініть свій код 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"
});
});
Примітка: вам доведеться знайти відповідне зображення.