From da7cc9c771fd2b5be9cc71e4c3da2c985cb53c6b Mon Sep 17 00:00:00 2001 From: Masahiro FUJIMOTO Date: Thu, 10 Feb 2022 22:19:52 +0900 Subject: を移行準備 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- files/ja/web/html/element/input/week/index.html | 154 ++++++++++++------------ 1 file changed, 77 insertions(+), 77 deletions(-) (limited to 'files/ja') diff --git a/files/ja/web/html/element/input/week/index.html b/files/ja/web/html/element/input/week/index.html index 53f445ff55..6df29ade0c 100644 --- a/files/ja/web/html/element/input/week/index.html +++ b/files/ja/web/html/element/input/week/index.html @@ -2,43 +2,43 @@ title: slug: Web/HTML/Element/input/week tags: - - Element - - Forms + - 要素 + - フォーム - HTML - HTML Input Types - - HTML forms + - HTML フォーム - HTML input - Input - - Input Element - - Input Type - - Input Types - - Reference + - 入力要素 + - 入力型 + - 入力型s + - リファレンス - Week - Weeks translation_of: Web/HTML/Element/input/week --- -
{{HTMLRef("Input_types")}}
+{{HTMLRef("Input_types")}} -

{{HTMLElement("input")}} 要素の week 型は、年と、その年の ISO 8601 週番号 (つまり、第1週から第52または53週) を簡単に入力することができる入力欄を生成します。

+{{HTMLElement("input")}} 要素の `week` 型は、年と、その年の [ISO 8601 週番号](https://en.wikipedia.org/wiki/ISO_8601#Week_dates) (つまり、第1週から第[52または53](https://en.wikipedia.org/wiki/ISO_8601#Week_dates)週) を簡単に入力することができる入力欄を生成します。 -
{{EmbedInteractiveExample("pages/tabbed/input-week.html", "tabbed-shorter")}}
+{{EmbedInteractiveExample("pages/tabbed/input-week.html", "tabbed-shorter")}} - + -

コントロールのユーザーインターフェイスは、ブラウザーによって様々です。現時点ではブラウザー間の対応は限定的で、 Chrome/Opera と Microsoft Edge のみが対応しています。対応していないブラウザーでは、このコントロールは単純な <input type="text"> に格下げされます。

+コントロールのユーザーインターフェイスは、ブラウザーによって様々です。現時点ではブラウザー間の対応は限定的で、 Chrome/Opera と Microsoft Edge のみが対応しています。対応していないブラウザーでは、このコントロールは単純な `[<input type="text">](/ja/docs/Web/HTML/Element/input/text)` に格下げされます。 -

Chrome/Opera では、 week コントロールは週と年の値を埋めるスロット、もっと視覚的に選択するためのポップアップカレンダーインターフェイス、コントロールの値を消去するための "X" ボタンを提供します。

+Chrome/Opera では、 `week` コントロールは週と年の値を埋めるスロット、もっと視覚的に選択するためのポップアップカレンダーインターフェイス、コントロールの値を消去するための "X" ボタンを提供します。 -

+ -

Edge の week コントロールはもう少し凝っており、年と週を選ぶスライドするリールが開きます。

+Edge の `week` コントロールはもう少し凝っており、年と週を選ぶスライドするリールが開きます。 -

+ - + @@ -51,7 +51,7 @@ translation_of: Web/HTML/Element/input/week - + @@ -60,27 +60,27 @@ translation_of: Web/HTML/Element/input/week
{{anch("Value", "値")}}{{anch("値")}} 年と週を表す {{domxref("DOMString")}}、または空欄
IDL 属性list, value, valueAsDate, valueAsNumber`list`, `value`, `valueAsDate`, `valueAsNumber`
メソッド
-

+## 値 -

{{domxref("DOMString")}} で、入力欄に入力された年と週を表します。この入力型で使われる日時値の形式は、 HTML で使われる日付や時刻の形式HTML で使われる日付や時刻の形式で説明しています。

+{{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)で説明しています。 -

次のように {{htmlattrxref("value", "input")}} 属性に値を入れることで、既定値を設定することができます。

+次のように {{htmlattrxref("value", "input")}} 属性に値を入れることで、既定値を設定することができます。
<label for="week">どの週に始めたいですか。</label>
 <input id="week" type="week" name="week" value="2017-W01">
-

{{EmbedLiveSample('Value', 600, 60)}}

+{{EmbedLiveSample('Value', 600, 60)}} -

一点気を付けなければならないことは、実際の value は常に yyyy-Www の書式であり、表示される書式はこれとは異なる可能性があるということです。例えば、上記の値をサーバーに送信すると、ブラウザーは Week 01, 2017 のように表示するかもしれませんが、送信される値は常に week=2017-W01 のようになります。

+一点気を付けなければならないことは、実際の `value` は常に `yyyy-Www` の書式であり、表示される書式はこれとは異なる可能性があるということです。例えば、上記の値をサーバーに送信すると、ブラウザーは `Week 01, 2017` のように表示するかもしれませんが、送信される値は常に `week=2017-W01` のようになります。 -

次のように、 JavaScript から入力要素の {{domxref("HTMLInputElement.value", "value")}} プロパティを使用して、値を取得したり設定したりすることもできます。

+次のように、 JavaScript から入力要素の {{domxref("HTMLInputElement.value", "value")}} プロパティを使用して、値を取得したり設定したりすることもできます。
var weekControl = document.querySelector('input[type="week"]');
 weekControl.value = '2017-W45';

追加の属性

-

すべての {{HTMLElement("input")}} 型で共通する属性に加え、 week 型の入力欄は次の属性にも対応しています。

+すべての {{HTMLElement("input")}} 型で共通する属性に加え、 `week` 型の入力欄は次の属性にも対応しています。 @@ -91,19 +91,19 @@ weekControl.value = '2017-W45'; - + - + - + - + @@ -111,58 +111,58 @@ weekControl.value = '2017-W45';

{{htmlattrdef("max")}}

-

受け付ける (時間的に) 最も遅い年と週番号で、上記の{{anch("Value", "値")}}の節で説明した文字列書式です。要素に入力された {{htmlattrxref("value", "input")}} がこれを超えた場合、要素は制約検証に失敗します。 max 属性の値が妥当な週の文字列ではない場合、要素は最大値を持ちません。

+受け付ける (時間的に) 最も遅い年と週番号で、上記の{{anch("値")}}の節で説明した文字列書式です。要素に入力された {{htmlattrxref("value", "input")}} がこれを超えた場合、要素は[制約検証](/ja/docs/Web/Guide/HTML/HTML5/Constraint_validation)に失敗します。 `max` 属性の値が妥当な週の文字列ではない場合、要素は最大値を持ちません。 -

この値は min 属性で指定されたものより後か、同じ年と週を指定する必要があります。

+この値は `min` 属性で指定されたものより後か、同じ年と週を指定する必要があります。

{{htmlattrdef("min")}}

-

受け付ける最も早い年と週です。要素の {{htmlattrxref("value", "input")}} がこれより小さいと、要素は制約検証に失敗します。属性の値が妥当な週の文字列ではない場合、要素は最小値を持ちません。

+受け付ける最も早い年と週です。要素の {{htmlattrxref("value", "input")}} がこれより小さいと、要素は[制約検証](/ja/docs/Web/Guide/HTML/HTML5/Constraint_validation)に失敗します。属性の値が妥当な週の文字列ではない場合、要素は最小値を持ちません。 -

この値は max 属性で指定されたものより前か、同じ年と週を指定する必要があります。

+この値は `max` 属性で指定されたものより前か、同じ年と週を指定する必要があります。 -

{{page("/ja/docs/Web/HTML/Element/input/text", "readonly", 0, 1, 2)}}

+{{page("/ja/docs/Web/HTML/Element/input/text", "readonly", 0, 1, 2)}}

{{htmlattrdef("step")}}

-

{{page("/ja/docs/Web/HTML/Element/input/number", "step-include")}}

+{{page("/ja/docs/Web/HTML/Element/input/number", "step-include")}} -

week 入力欄では、 step の値は週数で指定され、 604,800,000 が乗じられます (ミリ秒単位の数値であるため)。 step の既定値は 1 であり、1週を表します。既定の刻みの既定値は -259,200,000 で、これは1970年の最初の週 (1970-W01) です。

+`week` 入力欄では、 `step` の値は週数で指定され、 604,800,000 が乗じられます (ミリ秒単位の数値であるため)。 `step` の既定値は 1 であり、1週を表します。既定の刻みの既定値は -259,200,000 で、これは1970年の最初の週 (`1970-W01`) です。 -

現時点で、 week 入力欄で stepany の値が何を意味するかが不明確です。これは情報が決定次第、更新されるでしょう。

+現時点で、 `week` 入力欄で `step` に `any` の値が何を意味するかが不明確です。これは情報が決定次第、更新されるでしょう。

week 入力欄の使用

-

week 入力欄は一見すると便利に見えます。簡単に週を選択するユーザーインターフェイスを提供し、ユーザーのロケールに関係なく、データ形式を正規化してサーバーに送信するからです。しかし、ブラウザーの互換性が限られているため、 <input type="week"> には問題があります。

+week 入力欄は一見すると便利に見えます。簡単に週を選択するユーザーインターフェイスを提供し、ユーザーのロケールに関係なく、データ形式を正規化してサーバーに送信するからです。しかし、ブラウザーの互換性が限られているため、 `<input type="week">` には問題があります。 -

<input type="week"> の基本的な使い方と少し複雑な使い方を見てみてから、その後でブラウザーの互換性の問題を緩和するアドバイスを提供しましょう ({{anch("Handling browser support", "ブラウザーの互換性の扱い")}}を参照してください)。

+`<input type="week">` の基本的な使い方と少し複雑な使い方を見てみてから、その後でブラウザーの互換性の問題を緩和するアドバイスを提供しましょう ({{anch("Handling browser support", "ブラウザーの互換性の扱い")}}を参照してください)。

week の基本的な使用

-

もっとも単純な <input type=week> の使用方法は、次のように基本的な <input> と {{htmlelement("label")}} 要素の組み合わせです。

+もっとも単純な `<input type=week>` の使用方法は、次のように基本的な `<input>` と {{htmlelement("label")}} 要素の組み合わせです。
<form>
   <label for="week">どの週から始めたいですか。</label>
   <input id="week" type="week" name="week">
 </form>
-

{{EmbedLiveSample('Basic_uses_of_week', 600, 40)}}

+{{EmbedLiveSample('Basic_uses_of_week', 600, 40)}}

入力欄の寸法の制御

-

<input type="week"> は {{htmlattrxref("size", "input")}} のような寸法に関する属性には対応していません。寸法を変更する必要がある場合は、 CSS を使用する必要があります。

+`<input type="week">` は {{htmlattrxref("size", "input")}} のような寸法に関する属性には対応していません。寸法を変更する必要がある場合は、 [CSS](/ja/docs/Web/CSS) を使用する必要があります。

step 属性の使用

-

{{htmlattrxref("step", "input")}} 属性を使用して、週の番号が増加または減少するときに飛ばす番号を変更することができるはずですが、対応しているブラウザーでも何も動作していないようです。

+{{htmlattrxref("step", "input")}} 属性を使用して、週の番号が増加または減少するときに飛ばす番号を変更することができるはずですが、対応しているブラウザーでも何も動作していないようです。

検証

-

既定で、 <input type="week"> は入力された値の検証を行いません。ユーザーインターフェイスの実装は一般的に、妥当な年と週でないものの入力をさせず、これは便利ですが、それでも入力欄を空のままにすることができ、また選択できる週の範囲を制限したくなるかもしれません。

+既定で、 `<input type="week">` は入力された値の検証を行いません。ユーザーインターフェイスの実装は一般的に、妥当な年と週でないものの入力をさせず、これは便利ですが、それでも入力欄を空のままにすることができ、また選択できる週の範囲を制限したくなるかもしれません。

週の最大値と最小値の設定

-

{{htmlattrxref("min", "input")}} および {{htmlattrxref("max", "input")}} 属性を使用して、ユーザーが選択することができる有効な週を制限することができます。以下の例では、最小値を Week 01, 2017 に、最大値を Week 52, 2017 に設定しています。

+{{htmlattrxref("min", "input")}} および {{htmlattrxref("max", "input")}} 属性を使用して、ユーザーが選択することができる有効な週を制限することができます。以下の例では、最小値を `Week 01, 2017` に、最大値を `Week 52, 2017` に設定しています。
<form>
   <label for="week">どの週から始めたいですか。</label>
@@ -171,9 +171,9 @@ weekControl.value = '2017-W45';
<span class="validity"></span> </form> -

{{EmbedLiveSample('Setting_maximum_and_minimum_weeks', 600, 40)}}

+{{EmbedLiveSample('Setting_maximum_and_minimum_weeks', 600, 40)}} -

上記の例の CSS です。 CSS の {{cssxref(":valid")}} および {{cssxref(":invalid")}} プロパティを使用して、現在の値が有効かどうかに基づいてスタイルを設定しています。アイコンは入力欄そのものではなく、入力欄の隣の {{htmlelement("span")}} に置くようにしないと、 Chrome ではコントロールの内側にコンテンツを生成するので、正しく整形したり表示したりすることができません。

+上記の例の CSS です。 CSS の {{cssxref(":valid")}} および {{cssxref(":invalid")}} プロパティを使用して、現在の値が有効かどうかに基づいてスタイルを設定しています。アイコンは入力欄そのものではなく、入力欄の隣の {{htmlelement("span")}} に置くようにしないと、 Chrome ではコントロールの内側にコンテンツを生成するので、正しく整形したり表示したりすることができません。
div {
   margin-bottom: 10px;
@@ -200,13 +200,13 @@ input:valid+span:after {
   padding-left: 5px;
 }
-

この結果は、対応するブラウザーでは2017年の第1週から第52週の間が有効に見え、選択することができます。

+この結果は、対応するブラウザーでは2017年の第1週から第52週の間が有効に見え、選択することができます。

週の値を必須にする

-

加えて、 {{htmlattrxref("required", "input")}} 属性を使用して、週の入力を必須にすることができます。結果として、対応するブラウザーでは週の入力欄が空欄の場合にエラーを表示します。

+加えて、 {{htmlattrxref("required", "input")}} 属性を使用して、週の入力を必須にすることができます。結果として、対応するブラウザーでは週の入力欄が空欄の場合にエラーを表示します。 -

例を見てみましょう。週の最小値と最大値を設定し、かつフィールドを必須に設定しています。

+例を見てみましょう。週の最小値と最大値を設定し、かつフィールドを必須に設定しています。
<form>
   <div>
@@ -220,46 +220,46 @@ input:valid+span:after {
   </div>
 </form>
-

フォームに値を設定せずに送信しようとすると、ブラウザーはエラーを表示します。例を実行してみてください。

+フォームに値を設定せずに送信しようとすると、ブラウザーはエラーを表示します。例を実行してみてください。 -

{{EmbedLiveSample('Making_week_values_required', 600, 120)}}

+{{EmbedLiveSample('Making_week_values_required', 600, 120)}} -

対応していないブラウザーを使用したときのスクリーンショットです。

+対応していないブラウザーを使用したときのスクリーンショットです。 -

+
-

重要: HTML のフォーム検証は、入力されたデータが正しい形式であることを保証するスクリプトの代用にはなりません。 HTML を調整して検証をくぐり抜けたり、完全に削除したりすることはとても簡単にできます。 HTML を完全にバイパスし、サーバーに直接データを送信することも可能です。サーバー側のコードが受信したデータの検証に失敗した場合、不適切な形式のデータ (または大きすぎるデータ、間違った種類のデータなど) が送信された場合に災害が発生するおそれがあります。

+重要: HTML のフォーム検証は、入力されたデータが正しい形式であることを保証するスクリプトの代用にはなりません。 HTML を調整して検証をくぐり抜けたり、完全に削除したりすることはとても簡単にできます。 HTML を完全にバイパスし、サーバーに直接データを送信することも可能です。サーバー側のコードが受信したデータの検証に失敗した場合、不適切な形式のデータ (または大きすぎるデータ、間違った種類のデータなど) が送信された場合に災害が発生するおそれがあります。

ブラウザーの対応の扱い

-

前述のように、現時点で week 入力欄を利用する上で一番の問題はブラウザーの互換性です。デスクトップでは Safari と Firefox は対応しておらず、 IE の古いバージョンも対応していません。

+前述のように、現時点で week 入力欄を利用する上で一番の問題はブラウザーの互換性です。デスクトップでは Safari と Firefox は対応しておらず、 IE の古いバージョンも対応していません。 -

Android や iOS のようなモバイルプラットフォームは、このような入力型が実に有効であり、タッチスクリーン環境で実に簡単に値を選択できる専用のユーザーインターフェイスコントロールを提供します。例えば、 Android 版 Chrome の week 選択は、次のようになっています。

+Android や iOS のようなモバイルプラットフォームは、このような入力型が実に有効であり、タッチスクリーン環境で実に簡単に値を選択できる専用のユーザーインターフェイスコントロールを提供します。例えば、 Android 版 Chrome の `week` 選択は、次のようになっています。 -

+ -

対応していないブラウザーでは安全にテキスト入力欄に格下げされますが、これはユーザーインターフェイスの一貫性 (表示されるコントロールが異なること) とデータの扱いの二つの問題を生じます。

+対応していないブラウザーでは安全にテキスト入力欄に格下げされますが、これはユーザーインターフェイスの一貫性 (表示されるコントロールが異なること) とデータの扱いの二つの問題を生じます。 -

二つ目の問題はより深刻です。すでに述べたように、 week 入力欄では、実際の値が常に yyyy-Www の書式で正規化されます。ブラウザーが一般的なテキスト入力欄にフォールバックした場合、ユーザーが正しい書式で入力するよう案内することができません (そして、おそらく認識できません)。人間が週の値を書くには、次のように色々な方法があります。

+二つ目の問題はより深刻です。すでに述べたように、 `week` 入力欄では、実際の値が常に `yyyy-Www` の書式で正規化されます。ブラウザーが一般的なテキスト入力欄にフォールバックした場合、ユーザーが正しい書式で入力するよう案内することができません (そして、おそらく認識できません)。人間が週の値を書くには、次のように色々な方法があります。 -

ブラウザーに依存しない方法によってフォームで年と週を扱う最善の方法は、現時点では年と週を別々なコントロール ({{htmlelement("select")}} 要素で入力するものが一般的です。以下の実装を見てください) にするか、 jQuery date picker のような JavaScript ライブラリを使用することです。

+ブラウザーに依存しない方法によってフォームで年と週を扱う最善の方法は、現時点では年と週を別々なコントロール ({{htmlelement("select")}} 要素で入力するものが一般的です。以下の実装を見てください) にするか、 [jQuery date picker](https://jqueryui.com/datepicker/) のような JavaScript ライブラリを使用することです。

-

この例では、週を選択するユーザーインターフェイスの要素を2組生成します。ネイティブの <input type="week"> 入力欄と、 week 入力欄に対応しない古いブラウザーで年と週を選択するための、2つの {{htmlelement("select")}} 要素です。

+この例では、週を選択するユーザーインターフェイスの要素を2組生成します。ネイティブの `<input type="week">` 入力欄と、 `week` 入力欄に対応しない古いブラウザーで年と週を選択するための、2つの {{htmlelement("select")}} 要素です。 -

{{EmbedLiveSample('Examples', 600, 140)}}

+{{EmbedLiveSample('Examples', 600, 140)}} -

HTML は次のようになります。

+HTML は次のようになります。
<form>
   <div class="nativeWeekPicker">
@@ -287,7 +287,7 @@ input:valid+span:after {
   </div>
 </form>
-

週の値は以下の JavaScript のコードで動的に生成されます。

+週の値は以下の JavaScript のコードで動的に生成されます。 -

もう一つの面白い部分は、機能の検出コードです。ブラウザーが <input type="week"> に対応しているかどうかを検出するために、新たな {{htmlelement("input")}} 要素を生成し、その typeweek に設定てみて、すぐに type に何が設定されたかをチェックします。 datetime-local 型に対応していないブラウザーでは、 week 型が text 型へフォールバックされます。 <input type="week"> に対応していない場合は、ネイティブの日時入力欄を非表示にしてフォールバック用の ({{htmlelement("select")}}) による選択ユーザーインターフェイスを表示します。

+もう一つの面白い部分は、機能の検出コードです。ブラウザーが `<input type="week">` に対応しているかどうかを検出するために、新たな {{htmlelement("input")}} 要素を生成し、その `type` を `week` に設定てみて、すぐに type に何が設定されたかをチェックします。 `datetime-local` 型に対応していないブラウザーでは、 `week` 型が `text` 型へフォールバックされます。 `<input type="week">` に対応していない場合は、ネイティブの日時入力欄を非表示にしてフォールバック用の ({{htmlelement("select")}}) による選択ユーザーインターフェイスを表示します。
// 変数を定義
 var nativePicker = document.querySelector('.nativeWeekPicker');
@@ -360,10 +360,10 @@ function populateWeeks() {
 }
-

: 53週ある年もあることを忘れないでください(年あたりの週数を参照)。商品のアプリを開発するときはこれを念頭に置いておく必要があります。

+: 53週ある年もあることを忘れないでください([年あたりの週数](https://en.wikipedia.org/wiki/ISO_week_date#Weeks_per_year)を参照)。商品のアプリを開発するときはこれを念頭に置いておく必要があります。
-

仕様書

+## 仕様書
{{anch("max")}}`{{anch("max")}}` 妥当な入力として受け付ける最も遅い年と週
{{anch("min")}}`{{anch("min")}}` 妥当な入力として受け付ける最も早い年と週
{{anch("readonly")}}`{{anch("readonly")}}` 論理属性で、存在する場合、入力欄の内容はユーザーが編集できないことを示す
{{anch("step")}}`{{anch("step")}}` ユーザーインターフェイスや制約検証に使用する刻み値 (許される値の間隔)
@@ -382,15 +382,15 @@ function populateWeeks() {
-

ブラウザーの互換性

+## ブラウザーの互換性 -

{{Compat("html.elements.input.input-week")}}

+{{Compat("html.elements.input.input-week")}} -

関連情報

+## 関連情報 -- cgit v1.2.3-54-g00ecf