IE の時代には、入力欄ごとに IME の状態を変える独自実装がありました。
ただ、現在の Web で同じようなことをしたい場合にまず見ておきたいのは、inputmode 属性です。
inputmode は、入力欄にどんな種類の値が入るのかをブラウザへ伝えるためのヒントです。
主にスマートフォンやタブレットのソフトウェアキーボードに影響し、たとえば数字入力、電話番号、メールアドレス、検索などに合わせて、表示されるキーボードを切り替えられます。
現在は主要ブラウザで広く利用できます。
MDN でも Baseline Widely available とされており、Can I use の対応表でも Chrome、Safari、Firefox、Edge、iOS Safari、Chrome for Android などでサポートされています。
各環境で試したい方は以下どうぞ。
iOS や Android では、inputmode の値によってソフトウェアキーボードの表示が変わることを確認できます。
注意したいのは、inputmode はあくまで入力 UI のヒントであって、値の検証を行うものではないという点です。
inputmode="numeric" を指定しても、入力値が必ず数値として妥当になるわけではありません。必要に応じて type、pattern、autocomplete、サーバーサイドのバリデーションと組み合わせて考える必要があります。
たとえば、郵便番号や認証コードのように「数字っぽいけれど数値計算するものではない」入力では、type="text" のまま inputmode="numeric" を指定する方が扱いやすいことがあります。
一方で、メールアドレスなら type="email"、電話番号なら type="tel" のように、意味として適切な type がある場合はそちらも検討した方が自然です。
入力は最終的にはユーザーに委ねられるものです。
inputmode は入力を強制するためのものではなく、入力しやすいキーボードを出すための小さな補助として使うのがよさそうです。