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属性と同等の機能を完全に再現できるわけではありません。