だからここに私の解決策があります(ジョンヴァンスの答えに似ています):
まずここに行き、モバイルブラウザを検出する機能を入手してください。
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 for 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"
});
});
注:適切な画像を見つける必要があります。