Итак, вот мое решение (похоже на ответ Джона Вэнса):
Сначала перейдите сюда и получите функцию для обнаружения мобильных браузеров.
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"
});
});
Примечание: вам нужно будет найти подходящее изображение.