はじめに
現在、自己学習の為、既存サイトを模倣したサイトを作成しています。
調べて実装した内容を自分なりにまとめてみました。
※参考にさせて頂いた記事・サイトは最後に記載しております。
今回の目標
目のマークを押すと表示・非表示が切り替わる パスワード入力欄の実装
色々なサイトで見かける機能ですが、今まであまり気にせず利用していました。
改めて、何故こんな機能が必要なの??と思い調べると、パスワードは表示すべきか非表示にすべきか、過去、思った以上にたくさんの議論が交わされていた問題のようでした。知らなかった。。。
表示・非表示はどちらにもメリットとデメリットがあり、折衷案としても切り替え機能付きの入力フォームは大変良いのではと思いました。
実装
仕様の確認と指針
・表示・非表示を切り替える際、画面遷移はない。
> JavaScriptを使用
・表示・非表示を切り替えるには、目のアイコンをクリックする。
> 目のアイコンは Font Awesome を使用
HTML
<form method="post" action="遷移先ページ">
<label for="password">パスワード</label>
<div id="inputBox">
<input type="password" id="password" name="password">
<span id="view">
<!-- 目のアイコン -->
<i class="far fa-eye-slash"></i>
</span>
</div>
<button type="submit">送信</button>
</form>
パスワード入力フォームを作成。
ここで作成したものが最初に表示される画面になる為、type="password" と記載、
アイコンも type="password" に対応するものを記載。
JavaScript
// id="view"を取得
let viewicon = document.getElementById('view');
// id="password"を取得
let inputtype = document.getElementById('password');
// id="view"クリック時の処理を設定
$('#view').on('click', function () {
// passwordからtextへ
if(inputtype.type === 'password'){
inputtype.type = 'text';
viewicon.innerHTML = '<i class="far fa-eye"></i>';
// textからpasswordへ
} else {
inputtype.type = 'password';
viewicon.innerHTML = '<i class="far fa-eye-slash"></i>';
}
});
アイコンをクリックした際の処理内容を設定。
input type が password の時は text へ、text の時は password になるよう記載。
備考
アイコンをボタンで表示させる場合は、HTMLのspan
をbutton
に書き換え、フォーム送信させたくないのでtype="button"
を追記。
<button id="view" type="button"><i class="far fa-eye-slash"></i></button>
さいごに
最後までご覧頂きありがとうございます。
認識違い・間違っている箇所、より適した書き方等がございましたら、是非ご教授頂ければ幸いです。
参考・引用
- 石戸康平. "パスワード入力欄でパスワード表示・非表示を切り替える". GRAYCODE. 2021-02-24. https://gray-code.com/javascript/toggles-between-showing-and-hiding-the-password/, (参照 2022-01-20)
- @ tomokichi_ruby. "【JavaScript】innerHTM、textContentの違い". Qiita. 2019-07-16. https://qiita.com/tomokichi_ruby/items/3640f0bc64ad6c676206, (参照 2022-01-20)
- @ fujiyamaorange. "ボタンには常にtype="button"をつけよう". Zenn. 2023-08-08. https://zenn.dev/fujiyama/articles/496e5e81ba7df9, (参照 2025-04-11)