よくパスワード変更画面でパスワードを変更する時に、パスワード入力項目と、パスワード確認項目がある画面があります。
その時にHTML5のAPI機能を使ったパスワードの2重確認の実装方法をメモとして記載したいと思います。
目次
- 前提条件
- 実装方法
- 実行結果
- 参考文献
前提条件
- HTML5
- jQuery 1.9.1
- firefox
実装方法
HTML5の制約バリデーションAPIの一つ「setCustomValidity()」を使って実装します。setCustomValidityとは
element.setCustomValidity(data)とは、独自のエラーをセットでき、セットされるとelementがバリデートに失敗します。dataの中にバリデートのメッセージが指定でき、引数が空文字だと独自エラーがリセットされます。
実装サンプル
新しいパスワードと古いパスワードを入力して、新しいパスワードと古いパスワードが不一致で且つ、新しいパスワードと確認用パスワードが一致していた場合submitが出来るサンプルを以下に記載します。<!DOCTYPE HTML> <html lang="jp"> <head> <meta charset="utf-8"> <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> <script type="text/javascript"> $(function() { var $newPassword = $("input[name='newPassword']"), $oldPassword = $("input[name='oldPassword']"), $confirmPassword = $("input[name=confirmPassword]"), confirmPasswordCheck = function(data) { var pass = $newPassword.val(), confirmPass = $confirmPassword.val(); if (pass != confirmPass) { $confirmPassword[0].setCustomValidity("パスワードと確認用パスワードが一致しません。"); } else { $confirmPassword[0].setCustomValidity(""); } }, newPasswordCheck = function() { var pass = $oldPassword.val(), newPass = $newPassword.val(); if (pass == newPass) { $newPassword[0].setCustomValidity("新しいパスワードと古いパスワードが一致しています。"); } else { $newPassword[0].setCustomValidity(""); } }; $newPassword[0].oninput = function() { newPasswordCheck(); confirmPasswordCheck(); }; $oldPassword[0].oninput = function() { newPasswordCheck(); }; $confirmPassword[0].oninput = function () { confirmPasswordCheck(); }; }); </script> <base target="_self"> </head> <body> <form> <table > <tbody> <tr> <td><label>古いパスワード</label></td> <td>:</td> <td> <input type="password" name="oldPassword" maxlength=6 required /> </td> </tr> <tr> <td><label>新しいパスワード</label></td> <td>:</td> <td> <input type="password" name="newPassword" maxlength=6 required /> </td> </tr> <tr> <td><label>確認用パスワード</label></td> <td>:</td> <td> <input type="password" name="confirmPassword" maxlength=6 required /> </td> </tr> </tbody> </table> <input type="submit" value="変更" /> </form> </body> </html>
0 コメント:
コメントを投稿