HTML inputのtype属性のいろいろ。

#HTML/CSS
writtdden by KashiwakuraKazuki

みなさん、こんにちは。
柏倉です。

新年あけましておめでとうございます。
本年もGoatブログをよろしくお願いいたします。

今日はinputのtype属性についてお話したいと思います。

input要素とは?

input要素とはformのコントローラーを作成する要素であり、ユーザーがデータを入力できるフィールドです。
webサイトを作成する上で非常に重要な要素ともいえるのではないでしょうか?

また、用意されている様々なtype属性を使用して、その時々に合わせた形式で表示を変えることができます。

type属性で使われる属性値

以下のものがtype属性で使われる一覧になります。

<input type="button">
<input type="checkbox">
<input type="color">
<input type="date">
<input type="datetime-local">
<input type="email">
<input type="file">
<input type="hidden">
<input type="image">
<input type="month">
<input type="number">
<input type="password">
<input type="radio">
<input type="range">
<input type="reset">
<input type="search">
<input type="submit">
<input type="tel">
<input type="text">
<input type="time">
<input type="url">
<input type="week">

結構多いですね。
次の項目ではHTML5以降に追加されたものだけですが、簡単にお話したいと思います。

以下HTML5以降に追加されたもの

search

<input type="search">

「search」と「text」は基本的に同じような動きをします。
文字がfieldに打ち込まれている場合、searchは「×」ボタンが表示され入力されている文字をリセットすることができます。

tel

<input type="tel">

「tel」 は、電話番号の登録に用いられます。
「email」や「url」とは異なり、送信前に値が特定の書式であると自動的には検証されないようです。
電話番号の書式が国によって様々なことが原因のようですね。

url

<input type="url">

「url」は、URL を入力および編集させるために使用します。
「url」のvalue値は自動的にURLの構文として検証される文字列が入ります。
検証を通る値は空文字列と正しい書式のURL(urlscheme://restofurl)です。

email

<input type="email">

「email」は、一つのメールアドレス、またはmultiple属性を設定して、メールアドレスのリストを入力することができます。
「email」のvalueは文字列が入り、メールアドレスの構文に合うかどうかが自動的に検証されます。
検証を通る値は空文字列、正しい形式のメールアドレス(username@domainまたはusername@domain.tld)。
multiple 属性が指定されたときのみ、値はカンマ区切りで複数の正しい形式のメールアドレスを入れることができます。

datetime-local

<input type="datetime-local">

「datetime-local」は、ユーザーが日付と時刻、を入力することができる入力コントロールを生成します。カレンダー形式で表示されるので、今までのようにJSで実装しなくていいようになります。
日付や時刻の value は常に YYYY-MM-DDThh:mm の書式で、表示される形式と異なることに注意が必要です。
ほかのブログ等で対応してないブラウザー等あると書いてある場合もありますが、Can I useで見てみた感じ、だいたいカバーしてるように思います。(Can I use)

date

<input type="date">

「date」は日付を入力させる入力欄を、検証付きのテキストボックスまたは特殊な日付選択インターフェイスのどちらかで生成します。
「date」のvalueは日付を表す文字列です。日付は日付文字列形式に従って書式化されます。
カレンダー形式で表示されます。

month

<input type="month">

「month」は、ユーザーが年と月を入力できるようにする入力フィールドを作成し、年と月を簡単に入力できるようにします。
「month」のvalue値は文字列で、入力欄に入力された年と月の値を YYYY-MMの形式で表します。 この入力型で使用される時刻の値の形式について詳しくは、月文字列をご覧ください。

week

<input type="week">

「week」は、年と、その年の 第1週から第52,53週を簡単に入力することができる入力欄を生成します。
「week」のvalue値は文字列で、入力欄に入力された年と週を表します。
この入力型で使われる形式は、次のような形式で入力されます。2024-W03(2024年の3週目)

time

<input type="time">

「time」は、ユーザーが簡単に時刻 (時と分、任意で秒) を入力できるように設計された入力欄を生成します。
「time」のvalue値は常に先頭にゼロを含む 24 時制で hh:mm の書式であり、ユーザーのロケールに基づいて選択される入力書式とは関係ありません。時刻が秒を含む場合(step 属性の使用を参照)は、書式は常に hh:mm:ss です。

number

<input type="number">

「number」は、ユーザーに数値を入力させるために使用されます。数値以外の入力を除外するための値検証機能を内蔵しています。
「number」のvalue値は入力欄に入力された数字の値を表す数値です。
しかし、「e」,「+」,「-」は入力できてしまうので注意が必要です。

range

<input type="range">

「range」は、指定された値より小さくなく、別に指定された値より大きくない値をユーザーに指定させるために使用します。
「range」のvalue値は選択された数値を文字列で格納します。
ただし、これ単体では数値を見ることはできないので、JS等を使ってvalueを可視化してあげるといいと思います。

color

<input type="color">

「color」は、視覚的なインターフェイス、もしくは #rrggbb の 16 進数表記でテキストを入力することでユーザーが色を指定することができます。
「color」のvalue値は常に 16 進表記で RGB カラーを特定する 7 文字の文字列になります。

まとめ

HTML5以降、JSで組まなければ実装できなかったカレンダーやvalidateの処理など簡単に実装できるようになりましたね。
HTMLは一度覚えてしまうと、新しく情報を仕入れる機会も少ないかもしれませんが、たまには新しく追加変更された機能を調べてみてもいいかもしれません。

最後に

最後まで読んでくださってありがとうございます。
過去に下記のような記事も投稿していますので、よかったらご覧ください。
VScodeでメモを取るときにMarkdownって使ってますか?
dockerにamazon linux 2023を入れてnginx + php-fpm + Laravel の環境を作ってみた
cssだけでスクロールに追従してくるメニューを作る
今更なんですが意外と負けてないCakePHPのお話
PHPのisset empty is_null がわかりづらい・・・。ついでに配列のキーやオブジェクトのプロパティがあるかどうか判断するには??

Favorite