セキュリティと利便性のバランスはウェブデザインにおいて永遠のテーマである。そう言ったのはアリストテレスだったでしょうか。←違います。
フォームのパスワード入力欄に文字列を入力するとセキュリティの関係で黒い点々で表示されるわけですが、入力したパスワードを目で見て確認したいこともありますよね。
そこで、この記事ではJavaScriptを使ってパスワードの表示・非表示を切り替える方法を解説します。jQueryは使わずにVanilla JSで参ります。
目次
チェックボックスでパスワードの表示・非表示を切り替える
チェックボックスのON/OFFでパスワードの表示を切り替える例です。
動作サンプルとコード
コードの解説
- 1行目: (HTML) パスワード入力欄。
id
属性で一意な名前をつける。 - 3,4行目: (HTML) 表示を切り替えるためのチェックボックス。
id
属性で一意な名前をつける。 - 7行目: (JS) パスワード入力欄の要素を変数に代入。
- 8行目: (JS) チェックボックスの要素を変数に代入。
- 10行目: (JS) チェックボックスが変更されたら、以下の処理を実行。
- 11行目: (JS) チェックボックスがチェックされていたら、
- 12行目: (JS) パスワード入力欄の
type
属性をtext
に変更する。
- 12行目: (JS) パスワード入力欄の
- 13行目: (JS) それ以外(チェックボックスがチェックされていない)ならば、
- 14行目: (JS) パスワード入力欄の
type
属性をpassword
に変更する。
- 14行目: (JS) パスワード入力欄の
- 11行目: (JS) チェックボックスがチェックされていたら、
ボタンでパスワードの表示・非表示を切り替える
ボタンのクリックでパスワードの表示・非表示を切り替える例です。
動作サンプルとコード
コードの解説
- 4行目: (CSS) ボタンの横幅を固定。表示・非表示の切り替えでボタンの大きさが変わらないようにするため。
- 8行目: (HTML) パスワード入力欄。
id
属性で一意な名前をつける。 - 9行目: (HTML) 表示を切り替えるためのボタン。
id
属性で一意な名前をつける。 - 12行目: (JS) パスワード入力欄の要素を変数に代入。
- 13行目: (JS) ボタンの要素を変数に代入。
- 14行目: (JS) パスワードの表示状態を判別するための変数
passwordVisible
に初期値としてfalse
を代入。非表示中という意味。 - 16行目: (JS) ボタンがクリックされたら、以下の処理を実行。
- 17行目: (JS) ボタンが押されたときのデフォルトの動作をキャンセル。ボタンを押してもフォームが送信されないようにする。
- 18行目: (JS) パスワードが表示中ならば、
- 19行目: (JS) パスワード入力欄の
type
属性をpassword
に変更し、 - 20行目: (JS) ボタンの内容を
表示
に変更し、 - 21行目: (JS)
passwordVisible
変数をfalse
(非表示)に変更する。
- 19行目: (JS) パスワード入力欄の
- 22行目: (JS) それ以外(パスワードが非表示中)ならば、
- 23行目: (JS) パスワード入力欄の
type
属性をtext
に変更し、 - 24行目: (JS) ボタンの内容を
非表示
に変更し、 - 25行目: (JS)
passwordVisible
変数をtrue
(表示)に変更する。
- 23行目: (JS) パスワード入力欄の
目のアイコンでパスワードの表示・非表示を切り替える
目のアイコンをクリックしてパスワードの表示・非表示を切り替える例です。アイコンはFont Awesomeを使います。
動作サンプルとコード
コードの解説
- 3行目: (HTML) ヘッダでFont AwesomeのCSSを読み込む。
- 5-8行目: (CSS) 目のアイコンの位置を左にずらす。アイコンが入力欄の中にあるように見せるため。
- 9-12行目: (CSS) 入力欄の右に適度なpaddingを入れる。入力したパスワードとアイコンが重ならないようにするため。
box-sizing: border-box;
とすると、paddingを変更しても入力欄の幅が変わらない。 - 16行目: (HTML) パスワード入力欄。
id
属性で一意な名前をつける。 - 17行目: (HTML) 表示を切り替えるための目のアイコン。
id
属性で一意な名前をつける。class
にfa-fw
を指定して横幅を固定する。 - 20行目: (JS) パスワード入力欄の要素を変数に代入。
- 21行目: (JS) アイコンの要素を変数に代入。
- 22行目: (JS) パスワードの表示状態を判別するための変数
passwordVisible
に初期値としてfalse
を代入。非表示中という意味。 - 24行目: (JS) アイコンがクリックされたら、以下の処理を実行。
- 25行目: (JS) パスワードが表示中ならば、
- 26行目: (JS) パスワード入力欄の
type
属性をpassword
に変更し、 - 27行目: (JS) アイコンの
class
属性からfa-eye-slash
を削除し、 - 28行目: (JS) アイコンの
class
属性にfa-eye
を追加し、 - 29行目: (JS)
passwordVisible
変数をfalse
(非表示)に変更する。
- 26行目: (JS) パスワード入力欄の
- 30行目: (JS) それ以外(パスワードが非表示中)ならば、
- 31行目: (JS) パスワード入力欄の
type
属性をtext
に変更し、 - 32行目: (JS) アイコンの
class
属性からfa-eye
を削除し、 - 33行目: (JS) アイコンの
class
属性にfa-eye-slash
を追加し、 - 34行目: (JS)
passwordVisible
変数をtrue
(表示)に変更する。
- 31行目: (JS) パスワード入力欄の
- 25行目: (JS) パスワードが表示中ならば、
PR
無料で利用できるプログラミング学習サービスをお探しならば Code Lesson はいかがでしょうか。プロのエンジニアが監修した学習ロードマップで効率的に学習、AIに質問、最後にクイズで理解度をチェックできます。
さいごに
セキュリティと利便性を両立させたパスワード入力欄が作れるようになりました。アリストテレスもあの世で納得しているのではないでしょうか。
でわでわ
コメント