私が取り組んでいる MVC アプリでは、ページにいくつかの日付フィールドがあります。
私の最初の反応は、jQuery UI の datepicker を使用することでしたが、小さな問題が発生しました。このアプリケーションは iPad でも実行されると予想しています。そのため、HTML5<input type="date" />
タグの使用を検討するように依頼されましたが、ブラウザーがサポートしていない場合は日付ピッカーにフォールバックするように依頼されました。
もう 1 つの小さな問題: IE は悪です。
どうやら、IEは「サポート」してい<input type="date" />
ます。クリックしてもカレンダーが表示されないだけです。
省略された、サニタイズされたマークアップ:
@* In the HTML body... *@
@Html.InputFor(m => m.SomeDate, new { id="A", type="date" })
@Html.InputFor(m => m.SomeOtherDate, new { id="B", type="date" })
<script>
var $A = $('#A'),
$B = $('#B');
$(document).ready(function () {
fallbackToDatepicker($A);
fallbackToDatepicker($B);
@* ...SNIP: Other operations here... *@
});
function fallbackToDatepicker($field) {
if($field.type() != "date") {
console.log($field.selector + " is not a date field!");
$field.datepicker();
}
}
</script>
(以下に基づくソリューション: http://www.javascriptkit.com/javatutors/createelementcheck2.shtml )
私が解決しようとしている問題は、クライアントがネイティブ カレンダー ポップアップを持たないブラウザを実行しているかどうかを判断することです<input type="date" />
。クライアントがそのようなブラウザーで実行されている場合は、datepicker にフォールバックする必要があります。
質問: クライアント ブラウザが日付ポップアップをサポートしているかどうかを判断するための、より正確で洗練されたプログラム的な方法は何ですか?
(注: 私のチームには、日付入力の愚かさを捨てて、datepicker だけを使用することをお勧めします。)