投稿日 :
更新日 :
あなたのパスワードを設定します。任意のパスワード8文字を入力したら、「パスワードを設定する」ボタンをクリックしてください。
あなたが入力したパスワードを表示します。
Form3ではリアルタイムバリデーションを実装してみました。送信ボタンを押して初めてエラーメッセージが表示されるのではなく、送信ボタンを押す前に表示されるアレですね。
しかし、入力途中でエラーメッセージが出るとイラッとします。今回の例ですと最低文字数は8文字ですから、1~7文字目を打っている間にずっとエラーメッセージが表示されるわけです。これから勉強しようとしている時に、お母さんに「勉強しなさい!」と怒られた時の感情と似ています。これは良くありませんね。
さらに言うと、タイプミスして最初から入力し直す場合もあるので、入力中は黙っておいて欲しいわけです(パスワードはその性質上、特に打ち直す可能性が高いと思われます)。
onChangeで文字数をカウントするのは筋が悪いので、onBlurを使用することにしました。onBlurはフォーカスが外れた時に動作するイベントハンドラーです。フォーカスが外れた時に文字数をカウントして、8文字未満ならエラーメッセージを表示させます。
再度フォーカスした時は無条件でエラーメッセージを消します。onFocusハンドラーでフォーカス時の動作を定義できます。
しかしこれは「リアルタイム」ではないかも?とさっき思いましたが、細かいことは気にすんな。
テストコードはこちらです。テストは、
を行っています。