비동기 아이디 유효성 체크 구현
html
<td>
<input type="text" id="memberId" name="memberId" placeholder="아이디는 5자 이상"> <span id="p4"></span>
<span class="guide ok">이 아이디는 사용 가능합니다</span>
<span class="guide error">이 아이디는 사용할 수 없습니다.</span>
</td>
javascript
$("#memberId").keyup(function(){
var insertid = $("#memberId").val();
var regID = /[a-z0-9_]{5,16}$/;
var regID2 = /[a-z0-9]{1,4}$/;
console.log(insertid =="")
if(insertid ==""){
$("#p4").html("");
}
else if(!regID.test(insertid)){
$("#p4").html("아이디는 5자이상 영문소문자, 숫자,특수문자(_)만 사용 가능합니다.");
}else{
$.ajax({
url : "/member/checkId.kh",
type : "get",
data : {"insertid" : insertid},
success : function(data){
if(data != ""){
var str2 = "<span class='error'>["+data+"] 이미 사용중인 아이디 입니다.</span>";
$("#p4").html(str2)
}else{
var str = "<span class='ok'>이 아이디는 사용 가능합니다</span>"
$("#p4").html(str)
}
console.log("연결 성공")
},
error : function(){
console.log("서버 연결에 실패")
}
})
}
})
java
@ResponseBody
@RequestMapping(value="/member/checkId.kh" , method = RequestMethod.GET)
public String checkMemberId(
@RequestParam(value = "insertid" ,required = false) String insertid) {
List<Member> mList = mService.searchAllMember();
for(Member mOne : mList) {
if(mOne.getMemberId().equals(insertid)) {
return insertid;
}
}
return null;
}
- keyup을 사용해 키가 입력될때마다 데이터를 컨트롤러로 보내 유효성을 체크하도록 구성 .on("input",function(){ 도 keyup과 같은 효과를냄
- 정규표현식으로 1차 체크를 한 후 정규표현식에 부합했을때 ajax로 넘어가도록 설계
- 컨트롤단으로 넘어간 데이터는 mapper에서 가저온 Member List와 비교하여 이미 사용중인 아이디를 발견하였을 때는 return으로 보내줘서 비동기로 확인할 수 있게끔 함