ここで、Web コンポーネントは非常に便利ですが、まだすべてのブラウザーで完全にサポートされているわけではありません。
アイデアは、次のように 2 つの子 (from と to) を持つ単純な html 要素を作成することです。
<div id="fromToDate">
<div></div>
<div></div>
</div>
次に、日付ピッカーの外観を定義するテンプレートを作成します。
<template id="fromToDateTemplate">
<label for="fromDate">from</label>
<input type="date" class="fromDate" select=":first" required="" />
<label for="toDate">to</label>
<input type="date" class="toDate" select=":last" required="" />
</template>
選択パラメーターは、値がどこから取得されるかを定義するため、最初の入力フィールドは「#fromToDate」から最初の div を取得します。
最後に、「シャドウ ルート」にデータを入力し、ロジックを定義する必要があります。
var shadow = document.querySelector('#fromToDate').webkitCreateShadowRoot(),
template = document.querySelector('#fromToDateTemplate');
shadow.appendChild(template.content);
shadow.querySelector(".fromDate").addEventListener("change", function (e) {
var to = this.value;
shadow.querySelector(".toDate").setAttribute("min", this.value);
});
template.remove();
最後に 2 つの入力フィールドがレンダリングされ、最初の日付ピッカーで日付を選択すると、2 番目の日付ピッカーは下位のデータを選択できません。
フィドラーの例: http://jsfiddle.net/cMS9A/
利点:
- ウィジェットとしてビルド
- 再利用が容易
- ページを破らない
- 独立してスタイリングできる
短所:
- まだすべてのブラウザーでサポートされているわけではありません
今後の読書: