HTMLの<input type="hidden">
は、ユーザーには見えない隠しフィールドを設置するために使います。
👆ソースコード(HTML)上で<input type="hidden">
を使っても、ブラウザには表示されません。
hidden
の読み方は「ヒドゥン」です。<input type="text">
をCSSでdisplay: none
しているのと同じです。- あくまでもブラウザ上で表示されていないだけで、ソースコード上では閲覧可能なことに注意しましょう。
input type="hidden"の使いどころ
<input type="hidden">
を使う目的は、ユーザーは知る必要がないけど、サーバーには送りたい情報を格納するためです。具体的には以下のようなシーンで使います。
例
- データベースにユーザーの情報を保存するときにユーザーIDが必要。でもユーザー自身はIDを知る必要がない。そこで
<input type="hidden">
にユーザーIDをセットしておく。 - ブラウザからファイルをアップロードしたときのファイル名をサーバーに伝えたい。ファイル名はユーザーに見える必要がないので
<input type="hidden">
にセットしておく。 - あらかじめセキュリティ用のトークンを
<input type="hidden">
にセットしておく。フォーム送信後、サーバーでトークンを検証し、本人かどうかチェックする。
input type="hidden"の使い方
name属性:フィールドの名前をセット
<input type="hidden">
を使うときに欠かせないのがname
属性です。name="◯◯"
により、そのフィールドに名前がつきます。
<input type="hidden" name="example">
👆name="example"
なので、この隠しフィールドの名前はexample
です。サーバーにはexample=値
というような形で送信されることになります。
value属性:値をセット
value="◯◯"
により、フィールドの値を決めておくことができます。例えば、ページが読み込まれた時点の日時を、隠しフィールドにセットしておき、サーバーに送信したい場合は、以下のようにします。
<input type="hidden" name="example" value="< 現時点の時刻を出力するコード >">
👆< 日時を出力するコード >
の部分は、プログラミング言語により異なります。たとえばPHPなら<?php echo date("Y-m-d-H-i-s"); ?>
のようにします。
これを他のフォームの内容と一緒にサーバーに送り、サーバー側で処理する…のようなことができるわけですね。
value属性は必須ではない
value
属性は必須ではありません。省略するとページが読み込まれた時点では、フィールドの値(value)は空になっています。ユーザーの操作により<input type="hidden">
に値をセットするというような場合にはvalue
属性を書いておく必要はありません。
JavaScriptで隠しフィールドに値をセットする
ブラウザ上でフィールドの値をセットする or 変更するためにはJavaScriptを使います。
HTML
<input type="hidden" name="example" id="example-id">
👆例えば、JavaScriptによりid="example-id"
を持つ<input type="hidden">
に値をセットしてみましょう。
JavaScript
// まず隠しフィールド要素を取得
const hiddenField = document.getElementById('example-id');
// 値をセット
hiddenField.value = "好きな値"
👆隠しフィールド要素.value = ◯◯
で値(value)をセットできます。この状態でフォームを送信すると、サーバーには隠しフィールドの値(example=好きな値
)が送信されます。
対応ブラウザ
<input type="hidden">
は、主要ブラウザすべてで使用可能です。
その他の種類のinputタグの使い方は、下記リンク先で解説しています。