inputmode属性は入力内容が決まったfieldへだけ指定する
公開日: 執筆:佐藤
inputmode属性は、form fieldへどのような入力方法を使うかをbrowserへ示すための属性です。電話番号、メールアドレス、URLのように、入力する内容が決まっているfieldで検討します。入力の形式を制限する属性でも、server側の入力確認を代わりに行う属性でもありません。
mobileのformでは、入力しやすさがそのまま問い合わせのしやすさに影響します。しかし、画面に数字用の入力方法が出たからといって、何を入力する欄かが明確になるわけではありません。fieldの目的、画面上の説明、入力の補助、送信後の確認を順にそろえます。inputmodeは、決まった目的をbrowserへ伝える補助です。
HTML 5.1 Candidate Recommendationは、inputmode属性をform controlの入力方法を示すものとして定めています。kana、katakana、numeric、tel、email、urlなどの値を扱います。この時点でinputmode属性はat-risk featureにも含まれるため、指定だけで動作を決めつけず、対象browserで確認します。
入力内容と入力方法を分ける
問い合わせformでは、fieldへ何を書いてもらうかを先に決めます。入力内容が曖昧なままinputmodeを選ぶと、利用者が見るlabelとbrowserが示す入力方法がずれます。入力方法を先に選んで、あとからfieldの意味を合わせる順序にはしません。
| 確認するもの | 役割 | 代わりにできないこと |
|---|---|---|
label |
利用者へ入力項目の意味を伝える | browserへ入力方法を示すこと |
type属性 |
input fieldの種類を示す | server側で受信dataを検査すること |
inputmode属性 |
browserへ想定する入力方法を示す | 入力値の正しさを保証すること |
| server側の確認 | 受信したdataを検査する | 利用者へ入力する内容を説明すること |
たとえば、fieldのlabelが「ご連絡先」だけなら、電話番号とメールアドレスのどちらを入れるか決まりません。このfieldへinputmode="tel"を付けても、入力内容を説明したことにはなりません。電話番号を受け取るならlabelを「電話番号」とし、メールアドレスを受け取るなら別のfieldに分けます。
数字だけを入力してほしいfieldでも、数字用の入力方法を出せばよいとは限りません。郵便番号、電話番号、注文番号、人数では、桁数、記号、先頭のゼロを扱う必要が異なります。まず、利用者に何を書いてもらい、受信側が何に使うかを決めます。入力方法は、その内容に合うかを確認してから選びます。
用途が決まらないfieldへinputmodeを付けると、利用者に余計な制限を感じさせることがあります。自由に相談内容を書く欄、住所の補足、備考のように文字を入力するfieldは、電話番号と同じ補助にはしません。formを入力しやすくするために、各fieldを同じ形へそろえる必要はありません。
input typeを選んでから補助の指定を考える
電話番号を受け取るfieldでは、まずtype="tel"を使うかを考えます。メールアドレスやURLにも、それぞれ対応するinput typeがあります。inputmodeは、fieldの目的を決める前に付けるものではありません。
<p>
<label>電話番号
<input name="tel" type="tel" inputmode="tel">
</label>
</p>
<p>
<label>メールアドレス
<input name="email" type="email" inputmode="email">
</label>
</p>
この例は、fieldの用途と入力方法をそろえるための仮例です。inputmodeを付けても、存在しない電話番号や誤ったメールアドレスを受け取らないとは限りません。必要なfieldだけに絞り、送信後に受信内容を確認する仕組みを残します。
inputmodeがあることと、input typeを適切に選んだことも別です。見た目の入力方法だけを合わせて、typeやnameを曖昧にすれば、送信されたdataを扱う側が困ります。label、input type、name、inputmode、受信画面の項目名を対応させます。fieldの一つを変えたら、画面と受信後の両方を確認します。
browserが表示する入力方法は、利用者への補助です。誤った値を必ず止める仕組みではありません。電話番号のfieldに文字列が入る、email addressのfieldが空欄のまま送られる、といった場合をどう扱うかは、必須設定とserver側の確認で別に決めます。attributeを足したことで、受信後の検査を省かないことが必要です。
実機で入力から送信まで確認する
入力方法は、source上のattributeだけで評価しません。mobile端末でformを開き、利用者が迷わず入力して送れるかを確かめます。
- fieldごとに、受け取る内容を一文で決める。
- labelとinput typeを対応させる。
- 入力方法が明確なfieldだけへ
inputmodeを指定する。 - mobile端末で入力し、表示される入力方法を確認する。
- 送信後に受信したdataを確認する。
- fieldの目的、確認した端末、変更日、承認者を記録する。
実機で確認するときは、入力画面が出るかだけで終えません。labelを見て何を書くか分かるか、入力方法がfieldの内容に合うか、送信buttonまで進めるか、送信後に受信内容が分かるかを順に見ます。formの途中で別pageへ移ったり、入力をやり直したりする場合は、利用者が戻れるかも確認します。
formの修正を外部へ頼む場合も、どの情報を受け取るか、受信先はどこか、送信を誰が確認するかはsite側で決めます。入力を補助する設定を頼むことと、問い合わせを受け取れる状態を確認することは別です。依頼するときは、対象field、期待する入力、確認する端末、受信後に見る項目を渡します。実装した人だけでなく、受付する人も受信内容を確認します。
最初の一手は、電話番号やメールアドレスのように用途が決まっているfieldを一つ選び、mobile端末で入力から送信まで試すことです。fieldの意味が決まらない項目へ、先にattributeを足しません。利用者の入力を助けることと、事業者が必要な情報を受け取ることを、同じ確認で確かめます。
関連記事

