●やりたいこと
フォーム移動する(入力中のフォームからフォーカスを外す)と、入力値を取得してAjaxを飛ばすような処理をjs側で作成し、PHPではAjaxから受け取った入力値にチェックをかけてエラーがあればエラーメッセージを返す。
twigでエラーメッセージを表示するようにする。
上記のことを行っているのですが、エラーメッセージを1回出すとずっと残ってしまいます。
なので、もしパスワードで値が入力されていたらエラーメッセージを表示させない。
とするにはどのようにかいたらよろしいでしょうか?
*現在パスワードだけ、バリデーションを行っています。
$(function() { $('#password_id').blur(function() { $.post('registration_form.php', { password: $('.password').val() }, function(data) { $('.js_error').html(data.message); }); }); });
・・Password_checker.php
<?php namespace lib; class Password_checker { public function password_validation() { if (empty($_POST['password'])) { $response = [ "message" => "パスワードを入力してください。" ]; return json_encode($response); } } }
・registration_form.php 一部抜粋
<?php require_once('../config/config.php'); // Composerで作成されたautoload.phpを読み込む require_once('../vendor/autoload.php'); // オブジェクトの作成 $password_check = new lib\Password_checker(); $password_json = $password_check->password_validation(); // encodeされたデータを元に戻す $js_error = json_decode($password_json, true); $js_error_message = $js_error['message'];
・registration_form.html 一部抜粋
<!-- Text input パスワード--> <div class="form-group"> <label class="col-md-4 control-label" for="password">パスワード <span class="label label-danger">必須</span></label> <div class="col-md-4"> <input name="password" class="password form-control input-md" id="password_id" type="password" placeholder="パスワード 半角" value="{{ password }}"> <p class="err">{{ password_errors.0 }}</p> <p class="err">{{ password_errors.1 }}</p> <p class="err">{{ password_errors.2 }}</p> <p class="js_error">{{ js_error_message }}</p> </div> </div>
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/06/02 13:44