diff options
author | Masahiro FUJIMOTO <mfujimot@gmail.com> | 2022-02-10 23:37:53 +0900 |
---|---|---|
committer | Masahiro FUJIMOTO <mfujimot@gmail.com> | 2022-02-17 11:19:40 +0900 |
commit | 8dfeab27c361cfc9db01de43799b2a61296512af (patch) | |
tree | 6861fb60f183100e47c5874826db7defe78605cd /files/ja/web/html/element | |
parent | 6ccedb220679b08505d7ea03d40ee6c9c2d860c8 (diff) | |
download | translated-content-8dfeab27c361cfc9db01de43799b2a61296512af.tar.gz translated-content-8dfeab27c361cfc9db01de43799b2a61296512af.tar.bz2 translated-content-8dfeab27c361cfc9db01de43799b2a61296512af.zip |
2021/10/03 時点の英語版に同期
Diffstat (limited to 'files/ja/web/html/element')
-rw-r--r-- | files/ja/web/html/element/input/week/index.md | 368 | ||||
-rw-r--r-- | files/ja/web/html/element/input/week/week-chrome-android.png | bin | 0 -> 10571 bytes | |||
-rw-r--r-- | files/ja/web/html/element/input/week/week-control-chrome.png | bin | 0 -> 6052 bytes | |||
-rw-r--r-- | files/ja/web/html/element/input/week/week-validation-chrome.png | bin | 0 -> 4841 bytes |
4 files changed, 179 insertions, 189 deletions
diff --git a/files/ja/web/html/element/input/week/index.md b/files/ja/web/html/element/input/week/index.md index 6df29ade0c..3e28275d62 100644 --- a/files/ja/web/html/element/input/week/index.md +++ b/files/ja/web/html/element/input/week/index.md @@ -5,69 +5,87 @@ tags: - 要素 - フォーム - HTML - - HTML Input Types + - HTML 入力型 - HTML フォーム - HTML input - Input - 入力要素 - 入力型 - - 入力型s - リファレンス - Week - - Weeks + - 週 +browser-compat: html.elements.input.input-week translation_of: Web/HTML/Element/input/week --- + {{HTMLRef("Input_types")}} -<span class="seoSummary">{{HTMLElement("input")}} 要素の <strong>`week`</strong> 型は、年と、その年の [ISO 8601 週番号](https://en.wikipedia.org/wiki/ISO_8601#Week_dates) (つまり、第1週から第[52または53](https://en.wikipedia.org/wiki/ISO_8601#Week_dates)週) を簡単に入力することができる入力欄を生成します。</span> +{{HTMLElement("input")}} 要素の **`week`** 型は、年と、その年の [ISO 8601 週番号](https://ja.wikipedia.org/wiki/ISO_8601#%E5%B9%B4%E3%81%A8%E9%80%B1%E3%81%A8%E6%9B%9C%E6%97%A5) (つまり、第 1 週から第 [52 または 53](https://ja.wikipedia.org/wiki/ISO_8601#%E5%B9%B4%E3%81%A8%E9%80%B1%E3%81%A8%E6%9B%9C%E6%97%A5) 週) を簡単に入力することができる入力欄を生成します。 {{EmbedInteractiveExample("pages/tabbed/input-week.html", "tabbed-shorter")}} -<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 [https://github.com/mdn/interactive-examples](https://github.com/mdn/interactive-examples) をクローンしてプルリクエストを送信してください。</div> - -コントロールのユーザーインターフェイスは、ブラウザーによって様々です。現時点ではブラウザー間の対応は限定的で、 Chrome/Opera と Microsoft Edge のみが対応しています。対応していないブラウザーでは、このコントロールは単純な `[<input type="text">](/ja/docs/Web/HTML/Element/input/text)` に格下げされます。 +コントロールのユーザーインターフェイスは、ブラウザーによって様々です。現時点ではブラウザー間の対応は限定的で、 Chrome/Opera と Microsoft Edge のみが対応しています。対応していないブラウザーでは、このコントロールは単純な [`<input type="text">`](/ja/docs/Web/HTML/Element/input/text) に格下げされます。 Chrome/Opera では、 `week` コントロールは週と年の値を埋めるスロット、もっと視覚的に選択するためのポップアップカレンダーインターフェイス、コントロールの値を消去するための "X" ボタンを提供します。 -<img alt="" src="https://mdn.mozillademos.org/files/15409/week-control-chrome.png" style="display: block; height: 235px; margin: 0px auto; width: 320px;"> +![](week-control-chrome.png) Edge の `week` コントロールはもう少し凝っており、年と週を選ぶスライドするリールが開きます。 -<img alt="" src="https://mdn.mozillademos.org/files/15411/week-control-edge.png" style="display: block; height: 391px; margin: 0px auto; width: 227px;"> +![](week-control-edge.png) <table class="properties"> - <tbody> - <tr> - <td><strong>{{anch("値")}}</strong></td> - <td>年と週を表す {{domxref("DOMString")}}、または空欄</td> - </tr> - <tr> - <td><strong>イベント</strong></td> - <td>{{domxref("HTMLElement/change_event", "change")}} および {{domxref("HTMLElement/input_event", "input")}}</td> - </tr> - <tr> - <td><strong>対応している共通属性</strong></td> - <td>{{htmlattrxref("autocomplete", "input")}}, {{htmlattrxref("list", "input")}}, {{htmlattrxref("readonly", "input")}}, {{htmlattrxref("step", "input")}}</td> - </tr> - <tr> - <td><strong>IDL 属性</strong></td> - <td>`list`, `value`, `valueAsDate`, `valueAsNumber`</td> - </tr> - <tr> - <td><strong>メソッド</strong></td> - <td>{{domxref("HTMLInputElement.select", "select()")}}, {{domxref("HTMLInputElement.stepDown", "stepDown()")}}, {{domxref("HTMLInputElement.stepUp", "stepUp()")}}</td> - </tr> - </tbody> + <tbody> + <tr> + <td><strong>{{anch("値")}}</strong></td> + <td> + 年と週を表す {{domxref("DOMString")}}、または空欄 + </td> + </tr> + <tr> + <td><strong>イベント</strong></td> + <td> + {{domxref("HTMLElement/change_event", "change")}} および + {{domxref("HTMLElement/input_event", "input")}} + </td> + </tr> + <tr> + <td><strong>対応している共通属性</strong></td> + <td> + {{htmlattrxref("autocomplete", "input")}}, + {{htmlattrxref("list", "input")}}, + {{htmlattrxref("readonly", "input")}}, + {{htmlattrxref("step", "input")}} + </td> + </tr> + <tr> + <td><strong>IDL 属性</strong></td> + <td> + <code>value</code>, <code>valueAsDate</code>, + <code>valueAsNumber</code>, <code>list</code> + </td> + </tr> + <tr> + <td><strong>メソッド</strong></td> + <td> + {{domxref("HTMLInputElement.select", "select()")}}, + {{domxref("HTMLInputElement.stepDown", "stepDown()")}}, + {{domxref("HTMLInputElement.stepUp", "stepUp()")}} + </td> + </tr> + </tbody> </table> ## 値 -{{domxref("DOMString")}} で、入力欄に入力された年と週を表します。この入力型で使われる日時値の形式は、 [HTML で使われる日付や時刻の形式](/ja/docs/Web/HTML/Date_and_time_formats)の[HTML で使われる日付や時刻の形式](/ja/docs/Web/HTML/Date_and_time_formats#Format_of_a_valid_week_string)で説明しています。 +{{domxref("DOMString")}} で、入力欄に入力された年と週を表します。この入力型で使われる日時値の形式は、 [HTML で使われる日付や時刻の形式](/ja/docs/Web/HTML/Date_and_time_formats)の[HTML で使われる日付や時刻の形式](/ja/docs/Web/HTML/Date_and_time_formats#week_strings)で説明しています。 次のように {{htmlattrxref("value", "input")}} 属性に値を入れることで、既定値を設定することができます。 -<pre class="brush: html notranslate"><label for="week">どの週に始めたいですか。</label> -<input id="week" type="week" name="week" value="2017-W01"></pre> +```html +<label for="week">どの週に始めたいですか。</label> +<input id="week" type="week" name="week" value="2017-W01"> +``` {{EmbedLiveSample('Value', 600, 60)}} @@ -75,107 +93,95 @@ Edge の `week` コントロールはもう少し凝っており、年と週を 次のように、 JavaScript から入力要素の {{domxref("HTMLInputElement.value", "value")}} プロパティを使用して、値を取得したり設定したりすることもできます。 -<pre class="brush: js notranslate">var weekControl = document.querySelector('input[type="week"]'); -weekControl.value = '2017-W45';</pre> +```js +var weekControl = document.querySelector('input[type="week"]'); +weekControl.value = '2017-W45'; +``` -<h2 id="Additional_attributes" name="Additional_attributes">追加の属性</h2> +## 追加の属性 すべての {{HTMLElement("input")}} 型で共通する属性に加え、 `week` 型の入力欄は次の属性にも対応しています。 -<table class="standard-table"> - <thead> - <tr> - <th scope="col">属性</th> - <th scope="col">説明</th> - </tr> - </thead> - <tbody> - <tr> - <td>`{{anch("max")}}`</td> - <td>妥当な入力として受け付ける最も遅い年と週</td> - </tr> - <tr> - <td>`{{anch("min")}}`</td> - <td>妥当な入力として受け付ける最も早い年と週</td> - </tr> - <tr> - <td>`{{anch("readonly")}}`</td> - <td>論理属性で、存在する場合、入力欄の内容はユーザーが編集できないことを示す</td> - </tr> - <tr> - <td>`{{anch("step")}}`</td> - <td>ユーザーインターフェイスや制約検証に使用する刻み値 (許される値の間隔)</td> - </tr> - </tbody> -</table> - -<h3 id="htmlattrdefmax">{{htmlattrdef("max")}}</h3> +### max -受け付ける (時間的に) 最も遅い年と週番号で、上記の{{anch("値")}}の節で説明した文字列書式です。要素に入力された {{htmlattrxref("value", "input")}} がこれを超えた場合、要素は[制約検証](/ja/docs/Web/Guide/HTML/HTML5/Constraint_validation)に失敗します。 `max` 属性の値が妥当な週の文字列ではない場合、要素は最大値を持ちません。 +受け付ける(時間的に)最も遅い年と週番号で、上記の{{anch("値")}}の節で説明した文字列書式です。要素に入力された {{htmlattrxref("value", "input")}} がこれを超えた場合、要素は[制約検証](/ja/docs/Web/Guide/HTML/Constraint_validation)に失敗します。 `max` 属性の値が妥当な週の文字列ではない場合、要素は最大値を持ちません。 この値は `min` 属性で指定されたものより後か、同じ年と週を指定する必要があります。 -<h3 id="htmlattrdefmin">{{htmlattrdef("min")}}</h3> +### min -受け付ける最も早い年と週です。要素の {{htmlattrxref("value", "input")}} がこれより小さいと、要素は[制約検証](/ja/docs/Web/Guide/HTML/HTML5/Constraint_validation)に失敗します。属性の値が妥当な週の文字列ではない場合、要素は最小値を持ちません。 +受け付ける最も早い年と週です。要素の {{htmlattrxref("value", "input")}} がこれより小さいと、要素は[制約検証](/ja/docs/Web/Guide/HTML/Constraint_validation)に失敗します。属性の値が妥当な週の文字列ではない場合、要素は最小値を持ちません。 この値は `max` 属性で指定されたものより前か、同じ年と週を指定する必要があります。 -{{page("/ja/docs/Web/HTML/Element/input/text", "readonly", 0, 1, 2)}} +### readonly + +論理属性で、存在すれば、ユーザーが編集することができないことを表します。しかし、 `value` は、 JavaScript コードから直接 {{domxref("HTMLInputElement")}} の `value` プロパティを設定することで変更することができます。 + +> **Note:** 読み取り専用フィールドは値を持てないため、 `required` は `readonly` 属性も指定されている入力欄には効果がありません。 -<h3 id="htmlattrdefstep">{{htmlattrdef("step")}}</h3> +### step -{{page("/ja/docs/Web/HTML/Element/input/number", "step-include")}} +`step` 属性は値が吸着する粒度を指定する数値、または後述する特殊な値 `any` です。刻みの基準値に等しい値(指定されていれば `{{anch("min")}}`、そうでなければ {{htmlattrxref("value", "input")}}、どちらも設定されていなければ適切な既定値)のみが妥当となります。 -`week` 入力欄では、 `step` の値は週数で指定され、 604,800,000 が乗じられます (ミリ秒単位の数値であるため)。 `step` の既定値は 1 であり、1週を表します。既定の刻みの既定値は -259,200,000 で、これは1970年の最初の週 (`1970-W01`) です。 +文字列値の `any` は、刻みがなく、どの値でも許可されることを意味します(`{{anch("min")}}` や `{{anch("max")}}` など、他の制約には制限されます)。 + +> **Note:** ユーザーがデータを入力したときには刻みの設定には吸着せず、{{Glossary("user agent", "ユーザーエージェント")}}は直近の妥当な値、同じ距離の値の選択肢が 2 つあった場合は、正の方向の推奨値に丸められます。 + +`week` 入力欄では、 `step` の値は週数で指定され、 604,800,000 が乗じられます(ミリ秒単位の数値であるため)。 `step` の既定値は 1 であり、 1 週を表します。既定の刻みの既定値は -259,200,000 で、これは 1970 年の最初の週 (`1970-W01`) です。 <em>現時点で、 `week` 入力欄で `step` に `any` の値が何を意味するかが不明確です。これは情報が決定次第、更新されるでしょう。</em> -<h2 id="Using_week_inputs" name="Using_week_inputs">week 入力欄の使用</h2> +## week 入力欄の使用 -week 入力欄は一見すると便利に見えます。簡単に週を選択するユーザーインターフェイスを提供し、ユーザーのロケールに関係なく、データ形式を正規化してサーバーに送信するからです。しかし、ブラウザーの互換性が限られているため、 `<input type="week">` には問題があります。 +week 入力欄は一見すると便利に見えます。簡単に週を選択するユーザーインターフェイスを提供し、ユーザーのロケールに関係なく、データ形式を正規化してサーバーに送信するからです。しかし、ブラウザーの互換性が限られているため、 `<input type="week">` には問題があります。 -`<input type="week">` の基本的な使い方と少し複雑な使い方を見てみてから、その後でブラウザーの互換性の問題を緩和するアドバイスを提供しましょう ({{anch("Handling browser support", "ブラウザーの互換性の扱い")}}を参照してください)。 +`<input type="week">` の基本的な使い方と少し複雑な使い方を見てみてから、その後でブラウザーの互換性の問題を緩和するアドバイスを提供しましょう ({{anch("ブラウザーの対応の扱い")}}を参照してください)。 -<h3 id="Basic_uses_of_week" name="Basic_uses_of_week">week の基本的な使用</h3> +### week の基本的な使用 -もっとも単純な `<input type=week>` の使用方法は、次のように基本的な `<input>` と {{htmlelement("label")}} 要素の組み合わせです。 +もっとも単純な `<input type="week">` の使用方法は、次のように基本的な `<input>` と {{htmlelement("label")}} 要素の組み合わせです。 -<pre class="brush: html notranslate"><form> - <label for="week">どの週から始めたいですか。</label> - <input id="week" type="week" name="week"> -</form></pre> +```html +<form> + <label for="week">どの週から始めますか。</label> + <input id="week" type="week" name="week"> +</form> +``` {{EmbedLiveSample('Basic_uses_of_week', 600, 40)}} -<h3 id="Controlling_input_size" name="Controlling_input_size">入力欄の寸法の制御</h3> +### 入力欄の寸法の制御 -`<input type="week">` は {{htmlattrxref("size", "input")}} のような寸法に関する属性には対応していません。寸法を変更する必要がある場合は、 [CSS](/ja/docs/Web/CSS) を使用する必要があります。 +`<input type="week">` は {{htmlattrxref("size", "input")}} のような寸法に関する属性には対応していません。寸法を変更する必要がある場合は、 [CSS](/ja/docs/Web/CSS) を使用する必要があります。 -<h3 id="Using_the_step_attribute" name="Using_the_step_attribute">step 属性の使用</h3> +### step 属性の使用 {{htmlattrxref("step", "input")}} 属性を使用して、週の番号が増加または減少するときに飛ばす番号を変更することができるはずですが、対応しているブラウザーでも何も動作していないようです。 -<h2 id="Validation" name="Validation">検証</h2> +## 検証 -既定で、 `<input type="week">` は入力された値の検証を行いません。ユーザーインターフェイスの実装は一般的に、妥当な年と週でないものの入力をさせず、これは便利ですが、それでも入力欄を空のままにすることができ、また選択できる週の範囲を制限したくなるかもしれません。 +既定で、 `<input type="week">` は入力された値の検証を行いません。ユーザーインターフェイスの実装は一般的に、妥当な年と週でないものの入力をさせず、これは便利ですが、それでも入力欄を空のままにすることができ、また選択できる週の範囲を制限したくなるかもしれません。 -<h3 id="Setting_maximum_and_minimum_weeks" name="Setting_maximum_and_minimum_weeks">週の最大値と最小値の設定</h3> +### 週の最大値と最小値の設定 -{{htmlattrxref("min", "input")}} および {{htmlattrxref("max", "input")}} 属性を使用して、ユーザーが選択することができる有効な週を制限することができます。以下の例では、最小値を `Week 01, 2017` に、最大値を `Week 52, 2017` に設定しています。 +{{htmlattrxref("min", "input")}} および {{htmlattrxref("max", "input")}} 属性を使用して、ユーザーが選択することができる有効な週を制限することができます。以下の例では、最小値を `2017 年第 1 週` に、最大値を `2017 年第 52 週` に設定しています。 -<pre class="brush: html notranslate"><form> - <label for="week">どの週から始めたいですか。</label> - <input id="week" type="week" name="week" - min="2017-W01" max="2017-W52"> - <span class="validity"></span> -</form></pre> +```html +<form> + <label for="week">どの週から始めますか。</label> + <input id="week" type="week" name="week" + min="2017-W01" max="2017-W52"> + <span class="validity"></span> +</form> +``` {{EmbedLiveSample('Setting_maximum_and_minimum_weeks', 600, 40)}} 上記の例の CSS です。 CSS の {{cssxref(":valid")}} および {{cssxref(":invalid")}} プロパティを使用して、現在の値が有効かどうかに基づいてスタイルを設定しています。アイコンは入力欄そのものではなく、入力欄の隣の {{htmlelement("span")}} に置くようにしないと、 Chrome ではコントロールの内側にコンテンツを生成するので、正しく整形したり表示したりすることができません。 -<pre class="brush: css notranslate">div { +```css +div { margin-bottom: 10px; position: relative; } @@ -198,99 +204,100 @@ input:valid+span:after { position: absolute; content: '✓'; padding-left: 5px; -}</pre> +} +``` -この結果は、対応するブラウザーでは2017年の第1週から第52週の間が有効に見え、選択することができます。 +この結果は、対応するブラウザーでは 2017 年の第 1 週から第 52 週の間が有効に見え、選択することができます。 -<h3 id="Making_week_values_required" name="Making_week_values_required">週の値を必須にする</h3> +### 週の値を必須にする -加えて、 {{htmlattrxref("required", "input")}} 属性を使用して、週の入力を必須にすることができます。結果として、対応するブラウザーでは週の入力欄が空欄の場合にエラーを表示します。 +加えて、 {{htmlattrxref("required", "input")}} 属性を使用して、週の入力を必須にすることができます。結果として、対応しているブラウザーでは週の入力欄が空欄の場合にエラーを表示します。 例を見てみましょう。週の最小値と最大値を設定し、かつフィールドを必須に設定しています。 -<pre class="brush: html notranslate"><form> - <div> - <label for="week">どの週から始めたいですか。</label> - <input id="week" type="week" name="week" - min="2017-W01" max="2017-W52" required> - <span class="validity"></span> - </div> - <div> - <input type="submit" value="Submit form"> - </div> -</form></pre> +```html +<form> + <div> + <label for="week">どの週から始めますか。</label> + <input id="week" type="week" name="week" + min="2017-W01" max="2017-W52" required> + <span class="validity"></span> + </div> + <div> + <input type="submit" value="フォームを送信"> + </div> +</form> +``` フォームに値を設定せずに送信しようとすると、ブラウザーはエラーを表示します。例を実行してみてください。 {{EmbedLiveSample('Making_week_values_required', 600, 120)}} -対応していないブラウザーを使用したときのスクリーンショットです。 +対応していないブラウザーを使用している方のためのスクリーンショットです。 -<img alt="" src="https://mdn.mozillademos.org/files/15415/week-validation-chrome.png" style="display: block; height: 85px; margin: 0px auto; width: 473px;"> +![](week-validation-chrome.png) -<div class="warning"> -<strong>重要</strong>: HTML のフォーム検証は、入力されたデータが正しい形式であることを保証するスクリプトの代用にはなりません。 HTML を調整して検証をくぐり抜けたり、完全に削除したりすることはとても簡単にできます。 HTML を完全にバイパスし、サーバーに直接データを送信することも可能です。サーバー側のコードが受信したデータの検証に失敗した場合、不適切な形式のデータ (または大きすぎるデータ、間違った種類のデータなど) が送信された場合に災害が発生するおそれがあります。 -</div> +> **Warning:** HTML のフォーム検証は、入力されたデータが正しい形式であることを保証するスクリプトの代用にはなりません。 HTML を調整して検証をくぐり抜けたり、完全に削除したりすることはとても簡単にできます。 HTML を完全にバイパスし、サーバーに直接データを送信することも可能です。サーバー側のコードが受信したデータの検証に失敗した場合、不適切な形式のデータ (または大きすぎるデータ、間違った種類のデータなど) が送信された場合に災害が発生するおそれがあります。 -<h2 id="Handling_browser_support" name="Handling_browser_support">ブラウザーの対応の扱い</h2> +## ブラウザーの対応の扱い 前述のように、現時点で week 入力欄を利用する上で一番の問題はブラウザーの互換性です。デスクトップでは Safari と Firefox は対応しておらず、 IE の古いバージョンも対応していません。 Android や iOS のようなモバイルプラットフォームは、このような入力型が実に有効であり、タッチスクリーン環境で実に簡単に値を選択できる専用のユーザーインターフェイスコントロールを提供します。例えば、 Android 版 Chrome の `week` 選択は、次のようになっています。 -<img alt="" src="https://mdn.mozillademos.org/files/15413/week-chrome-android.png" style="display: block; margin: 0 auto;"> +![](week-chrome-android.png) -対応していないブラウザーでは安全にテキスト入力欄に格下げされますが、これはユーザーインターフェイスの一貫性 (表示されるコントロールが異なること) とデータの扱いの二つの問題を生じます。 +対応していないブラウザーでは安全にテキスト入力欄に格下げされますが、これはユーザーインターフェイスの一貫性(表示されるコントロールが異なること)とデータの扱いの 2 つの問題を生じます。 -二つ目の問題はより深刻です。すでに述べたように、 `week` 入力欄では、実際の値が常に `yyyy-Www` の書式で正規化されます。ブラウザーが一般的なテキスト入力欄にフォールバックした場合、ユーザーが正しい書式で入力するよう案内することができません (そして、おそらく認識できません)。人間が週の値を書くには、次のように色々な方法があります。 +2 つ目の問題はより深刻です。すでに述べたように、 `week` 入力欄では、実際の値が常に `yyyy-Www` の書式で正規化されます。ブラウザーが一般的なテキスト入力欄にフォールバックした場合、ユーザーが正しい書式で入力するよう案内することができません (そして、おそらく認識できません)。人間が週の値を書くには、次のように色々な方法があります。 -<ul> - <li>`Week 1 2017`</li> - <li>`Jan 2-8 2017`</li> - <li>`2017-W01`</li> - <li>etc.</li> -</ul> +- `2017 年第 1 週` +- `Week 1 2017` +- `2017-W01` +- 等 -ブラウザーに依存しない方法によってフォームで年と週を扱う最善の方法は、現時点では年と週を別々なコントロール ({{htmlelement("select")}} 要素で入力するものが一般的です。以下の実装を見てください) にするか、 [jQuery date picker](https://jqueryui.com/datepicker/) のような JavaScript ライブラリを使用することです。 +ブラウザーに依存しない方法によってフォームで年と週を扱う最善の方法は、現時点では年と週を別々なコントロール({{htmlelement("select")}} 要素で入力するものが一般的です。以下の実装を見てください)にするか、 [jQuery date picker](https://jqueryui.com/datepicker/) のような JavaScript ライブラリーを使用することです。 -<h2 id="Examples" name="Examples">例</h2> +## 例 -この例では、週を選択するユーザーインターフェイスの要素を2組生成します。ネイティブの `<input type="week">` 入力欄と、 `week` 入力欄に対応しない古いブラウザーで年と週を選択するための、2つの {{htmlelement("select")}} 要素です。 +この例では、週を選択するユーザーインターフェイスの要素を 2 組生成します。ネイティブの `<input type="week">` 入力欄と、 `week` 入力欄に対応しない古いブラウザーで年と週を選択するための、 2 つの {{htmlelement("select")}} 要素です。 {{EmbedLiveSample('Examples', 600, 140)}} HTML は次のようになります。 -<pre class="brush: html notranslate"><form> - <div class="nativeWeekPicker"> - <label for="week">どの週から始めたいですか。</label> - <input id="week" type="week" name="week" - min="2017-W01" max="2018-W52" required> - <span class="validity"></span> - </div> - <p class="fallbackLabel">どの週から始めたいですか。</p> - <div class="fallbackWeekPicker"> - <div> - <span> - <label for="week">Week:</label> - <select id="fallbackWeek" name="week"> - </select> - </span> - <span> - <label for="year">Year:</label> - <select id="year" name="year"> - <option value="2017" selected>2017</option> - <option value="2018">2018</option> - </select> - </span> - </div> - </div> -</form></pre> +```html +<form> + <div class="nativeWeekPicker"> + <label for="week">どの週から始めますか。</label> + <input id="week" type="week" name="week" + min="2017-W01" max="2018-W52" required> + <span class="validity"></span> + </div> + <p class="fallbackLabel">どの週から始めますか。</p> + <div class="fallbackWeekPicker"> + <div> + <span> + <label for="week">Week:</label> + <select id="fallbackWeek" name="week"> + </select> + </span> + <span> + <label for="year">Year:</label> + <select id="year" name="year"> + <option value="2017" selected>2017</option> + <option value="2018">2018</option> + </select> + </span> + </div> + </div> +</form> +``` 週の値は以下の JavaScript のコードで動的に生成されます。 -<div class="hidden"> -<pre class="brush: css notranslate">div { +```css hidden +div { margin-bottom: 10px; position: relative; } @@ -313,12 +320,13 @@ input:valid+span:after { position: absolute; content: '✓'; padding-left: 5px; -}</pre> -</div> +} +``` -もう一つの面白い部分は、機能の検出コードです。ブラウザーが `<input type="week">` に対応しているかどうかを検出するために、新たな {{htmlelement("input")}} 要素を生成し、その `type` を `week` に設定てみて、すぐに type に何が設定されたかをチェックします。 `datetime-local` 型に対応していないブラウザーでは、 `week` 型が `text` 型へフォールバックされます。 `<input type="week">` に対応していない場合は、ネイティブの日時入力欄を非表示にしてフォールバック用の ({{htmlelement("select")}}) による選択ユーザーインターフェイスを表示します。 +もう一つの面白い部分は、機能の検出コードです。ブラウザーが `<input type="week">` に対応しているかどうかを検出するために、新たな {{htmlelement("input")}} 要素を生成し、その `type` を `week` に設定てみて、すぐに `type` に何が設定されたかをチェックします。対応していないブラウザーでは、 `week` 型が `text` 型へ代替されます。 `<input type="week">` に対応していない場合は、ネイティブの日時入力欄を非表示にして代替用の ({{htmlelement("select")}}) による選択ユーザーインターフェイスを表示します。 -<pre class="brush: js notranslate">// 変数を定義 +```js +// 変数を定義 var nativePicker = document.querySelector('.nativeWeekPicker'); var fallbackPicker = document.querySelector('.fallbackWeekPicker'); var fallbackLabel = document.querySelector('.fallbackLabel'); @@ -351,46 +359,28 @@ if(test.type === 'text') { } function populateWeeks() { - // 週の選択肢を52週で生成 - for(var i = 1; i <= 52; i++) { + // 週の選択肢を 52 週で生成 + for(var i = 1; i <= 52; i++) { var option = document.createElement('option'); - option.textContent = (i < 10) ? ("0" + i) : i; + option.textContent = (i < 10) ? ("0" + i) : i; weekSelect.appendChild(option); } -}</pre> +} +``` -<div class="note"> -<strong>注</strong>: 53週ある年もあることを忘れないでください([年あたりの週数](https://en.wikipedia.org/wiki/ISO_week_date#Weeks_per_year)を参照)。商品のアプリを開発するときはこれを念頭に置いておく必要があります。 -</div> +> **Note:** 53 週ある年もあることを忘れないでください([年あたりの週数](https://en.wikipedia.org/wiki/ISO_week_date#Weeks_per_year)を参照)。商品のアプリを開発するときはこれを念頭に置いておく必要があります。 ## 仕様書 -<table class="standard-table"> - <thead> - <tr> - <th scope="col">仕様書</th> - <th scope="col">状態</th> - <th scope="col">備考</th> - </tr> - </thead> - <tbody> - <tr> - <td>{{SpecName('HTML WHATWG', 'forms.html#week-state-(type=week)', '<input type="week">')}}</td> - <td>{{Spec2('HTML WHATWG')}}</td> - <td></td> - </tr> - </tbody> -</table> +{{Specifications}} ## ブラウザーの互換性 -{{Compat("html.elements.input.input-week")}} +{{Compat}} ## 関連情報 -<ul> - <li>全般的な {{HTMLElement("input")}} およびその操作に使用する{{domxref("HTMLInputElement")}} インターフェイス</li> - <li>[HTML で使用される日付と時刻の書式](/ja/docs/Web/HTML/Date_and_time_formats)</li> - <li>`[<input type="datetime-local">](/ja/docs/Web/HTML/Element/input/datetime-local)`, `[<input type="date">](/ja/docs/Web/HTML/Element/input/date)`, `[<input type="time">](/ja/docs/Web/HTML/Element/input/time)`, `[<input type="month">](/ja/docs/Web/HTML/Element/input/month)`</li> - <li>[CSS プロパティの互換性](/ja/docs/Learn/Forms/Property_compatibility_table_for_form_controls)</li> -</ul> +- 全般的な {{HTMLElement("input")}} およびその操作に使用する {{domxref("HTMLInputElement")}} インターフェイス +- [HTML で使用される日付と時刻の書式](/ja/docs/Web/HTML/Date_and_time_formats) +- [`<input type="datetime-local">`](/ja/docs/Web/HTML/Element/input/datetime-local), [`<input type="date">`](/ja/docs/Web/HTML/Element/input/date), [`<input type="time">`](/ja/docs/Web/HTML/Element/input/time), [`<input type="month">`](/ja/docs/Web/HTML/Element/input/month) +- [CSS プロパティの互換性](/ja/docs/Learn/Forms/Property_compatibility_table_for_form_controls) diff --git a/files/ja/web/html/element/input/week/week-chrome-android.png b/files/ja/web/html/element/input/week/week-chrome-android.png Binary files differnew file mode 100644 index 0000000000..54a9e2f4c3 --- /dev/null +++ b/files/ja/web/html/element/input/week/week-chrome-android.png diff --git a/files/ja/web/html/element/input/week/week-control-chrome.png b/files/ja/web/html/element/input/week/week-control-chrome.png Binary files differnew file mode 100644 index 0000000000..da78656744 --- /dev/null +++ b/files/ja/web/html/element/input/week/week-control-chrome.png diff --git a/files/ja/web/html/element/input/week/week-validation-chrome.png b/files/ja/web/html/element/input/week/week-validation-chrome.png Binary files differnew file mode 100644 index 0000000000..d1249365b9 --- /dev/null +++ b/files/ja/web/html/element/input/week/week-validation-chrome.png |