現在、ユーザー情報編集ページを作成中で、名前を変更する際に、入力された名前がデーターベースに存在するかをその場で確認できるようにしたいです。
ajaxでサーバー側に値を渡し、処理をして$messageに結果を入れています。
結果を表示するところまでは、この記述でできたのですが、
そのあと、ユーザーがもう一度名前を入力して送信するということができません。
onmousedownで表示内容を消しても、一度再読み込みしてから "使用できるか確かめる" ボタンを押さないと処理ができない状態です。
再読み込みしなくても、もう一度同じ処理ができるようにするにはどうしたらいいでしょうか?
ご教示お願いします。
html
1<div class="contents-b"> 2<input type="name" class="edit-name" onmousedown="countUpA()"; name="edit_name" value="<?php print($u_name); ?>"> 3<p><button type="button" class="name-conf">使用できるか確かめる</button> 4<p class="test"><?php print($message); ?></php> 5</div><!--contents-b--> 6 7<script> 8 9function countUpA(){ 10 $('input[name="edit_name"]').val(""); 11}; 12 13</script> 14 15
javascript
1$(".name-conf").on("click",function(){ 2 3 var name_check_0 = $(".edit-name"); 4 namecheck0 = name_check_0.val(); 5 6 if(namecheck0!=""){ 7 8 9 $.ajax({ 10 url:"/skima/mypages/user_edit", 11 data:{ 12 "namecheck":namecheck0, 13 }, 14 dataType:"html", 15 type:"post", 16 17 18 }).done(function(data,status,xhr){ 19 20 $("div.contents-b").html(data); 21 22 }); 23 24 25 }//if(namecheck0!="") 26 27 28 29});//$(".name-conf").on("click",function()
php
1 if($this->request->is("ajax")){ 2 3 $namecheck=$this->request->data["namecheck"];//名前使用可能チェック 4 5 6 if($namecheck==""){ 7 8 $message="名前を入力してください"; 9 10 }else{ 11 12 //同じ名前が使われていないかチェック 13 $username=$users->find(); 14 $username->select(['u_name','u_id']) 15 ->where(['u_name'=>$namecheck]); 16 $u_name_values=$username->first(); 17 $name_conf=$u_name_values['u_name']; 18 $u_id_conf=$u_name_values['u_id']; 19 20 21 22 //変更してい名前がすでに使われていた場合 23 if($name_conf!=""){ 24 if($u_id_conf==$user_id){//自分が使っている名前だった場合 25 $message="使用できます"; 26 }else{ 27 $message="この名前はすでに使用されています";//他のユーザーの場合 28 } 29 }else{ 30 $message="使用できます"; 31 }//if($name_conf!="") 32 33 $u_name=$namecheck; 34 35 }//if($namecheck=="") 36 37 38 39 40 41 $this->set(compact("message","u_name")); 42 43 44 }
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/03/29 10:06
2017/03/29 10:10
2017/03/29 10:15