HTMLのinputmode属性:スマートフォン入力を快適にする便利機能を徹底解説!
属性の役割
- 入力候補の自動表示:メールアドレス、URLなど
- キーボードレイアウトを最適化:数字、英字、記号など
- ユーザー入力を円滑化し、入力ミスを削減
属性の構文
<input type="text" inputmode="url">
上記の例では、input
要素にinputmode="url"
属性を付与することで、URL入力に適したキーボードを表示するように指定しています。
主な属性値
属性値には、様々な入力モードを指定できます。代表的なものを以下に示します。
password
: パスワード入力search
: 検索バー入力telephone
: 電話番号入力numeric
: 数字入力email
: メールアドレス入力url
: URL入力text
: 通常の英字入力none
: ソフトウェアキーボード表示を抑制
- 入力内容の制限は、
type
属性やpattern
属性などを併用する必要があります。 - 物理キーボード入力には影響しません。
- inputmode属性は、あくまでも入力モードのヒントであり、ブラウザによっては対応が異なる場合があります。
<label for="phone">電話番号:</label>
<input type="tel" id="phone" inputmode="telephone" required>
このコードでは、電話番号入力用のフォームを作成しています。inputmode="telephone"
を指定することで、数字キーと記号キーが並ぶテンキータイプのキーボードが表示されます。
メールアドレス入力
<label for="email">メールアドレス:</label>
<input type="email" id="email" inputmode="email" required>
このコードでは、メールアドレス入力用のフォームを作成しています。inputmode="email"
を指定することで、アットマーク(@)キーが強調表示されたり、メールアドレス用の入力候補が表示されたりするキーボードが表示されます。
URL入力
<label for="url">URL:</label>
<input type="url" id="url" inputmode="url" required>
このコードでは、URL入力用のフォームを作成しています。inputmode="url"
を指定することで、ドット(.)やスラッシュ(/)などの記号キーが強調表示されたり、URL用の入力候補が表示されたりするキーボードが表示されます。
パスワード入力
<label for="password">パスワード:</label>
<input type="password" id="password" inputmode="password" required>
このコードでは、パスワード入力用のフォームを作成しています。inputmode="password"
を指定することで、入力文字が非表示 (マスク) になり、パスワード入力を安全に行うことができます。
検索バー
<label for="search">検索:</label>
<input type="search" id="search" inputmode="search">
このコードでは、検索バーを作成しています。inputmode="search"
を指定することで、虫眼鏡アイコン付きの検索バーが表示されます。
- 実際の利用例では、必要に応じて
type
属性やpattern
属性などを併用するなど、様々な属性を組み合わせて使用します。 - 上記はあくまでも一例であり、inputmode属性には様々な値を指定できます。
そこで、inputmode属性の代替方法として以下の3つの方法が挙げられます。
入力内容のチェック
- 例:メールアドレス形式のチェック、電話番号形式のチェック
- JavaScriptを用いて、入力された内容をチェックすることで、意図した内容が入力されているかどうかを検証できます。
全角・半角文字の自動変換
- 例:電話番号入力時に全角数字を半角数字に変換
- JavaScriptを用いて、入力された全角文字を半角文字に自動変換したり、その逆の変換を行ったりすることができます。
望ましい入力モードを指定するHTMLの属性
- 以下の属性を使用することで、ある程度入力モードを制御できます。
type
属性:入力欄の種類を指定 (例:type="number"
で数字入力、type="email"
でメールアドレス入力)pattern
属性:入力値のパターンを正規表現で指定 (例:電話番号形式の制限)placeholder
属性:入力欄にプレースホルダテキストを表示 (例:入力形式のヒント)
- 状況に応じて適切な方法を選択する必要があります。
- これらの代替方法は、inputmode属性と同等の機能を完全に再現できるわけではありません。