HTML で非表示の input に対して required のダイアログを表示する
はじめに
HTML で非表示(※)の <input required>
に対して「入力が必要」のダイアログを表示する方法。
※厳密には非表示ではないが、人間的には非表示という感じ。詳細は後述。
TL;DR
display: none;
を使わない- 以下を使って
input
を(人間的には)見えなくする
目次
環境・条件
1 | $ sw_vers |
- Google Chrome バージョン: 86.0.4240.111(Official Build) (x86_64)
詳細
参考: html - make hidden field required - Stack Overflow
サンプル
See the Pen [HTML] input required hidden dialog by 17num (@17num) on CodePen.
xxxx.html
1 | <h5>ダイアログが出ない方</h5> |
xxxx.css
1 | .d-none { |
解説(という名のメモ)
ざっくり。
display: none;
にするとAn invalid form control with name='xxxx' is not focusable.
のエラー (DevTools の Console)- 「フォーカスできないよ」と怒られる
width
やheight
を小さくしたり、opacity
で透明化する場合は「(人間の目には)見えないがフォーカスは可能」- 未入力の場合にダイアログが表示される
使い所
以下のような割と特殊なケースぐらいかな。
- UI の都合上、標準のファイル選択ボタンは隠して独自ボタンを使ってファイル選択をさせたい
required
による必須チェックも行いたい- 未選択時のダイアログはブラウザ標準のもので良い
まとめ
display: none;
を使わない- 以下を使って
input
を(人間的には)見えなくする
参考文献
関連記事
- jQuery Select2 で、初期値の設定と選択状態のクリア
- Laravel で現在の URL 取得方法まとめ
- JavaScript で画像をローカルにダウンロード
- JavaScript で複数画像を zip に圧縮してローカルにダウンロード
- HTML img タグで画像が 404 エラーのときに代替画像を表示する方法
- mailto リンクで 宛先/CC/BCC/件名/本文 を指定 (JavaScript サンプルあり)
- JavaScript で URL のクエリパラメータを操作する方法
- axios で添付ファイルありのリクエスト(multipart/form-data の POST)