Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 패스트캠퍼스
- EC2
- 프로그래머스
- Kafka
- 시큐리티
- JWT
- 항해99
- java
- CentOS
- 스프링의 정석
- 생성자 주입
- MYSQL
- JavaScript
- docker
- 개인프로젝트
- visualvm
- 웹개발
- 쇼트유알엘
- Spring
- 데이터베이스
- DB
- Spring Security
- 스파르타코딩클럽
- 카프카
- @jsonproperty
- 스웨거
- WEB SOCKET
- 남궁성과 끝까지 간다
- AWS
- emqx
Archives
- Today
- Total
Nellie's Blog
유효성 검사시 기존 작성 데이터가 사라지는 문제 해결 본문
728x90
function register() {
// e.preventDefault(); // 폼 제출 방지
// 1. 여기서 내가 화면에서 post 로 입력하는 정보를 하나하나 가져오기
var name = $('#name').val()
var nickname = $('#nickname').val()
var username = $('#username').val()
var password = $('#password').val()
var passwordConfirm = $('#passwordConfirm').val()
var phoneNumber = $('#phoneNumber').val()
var profilePicture = $('#profilePicture').val()
var zipcode = $('#zipcode').val()
var streetAdr = $('#streetAdr').val()
var detailAdr = $('#detailAdr').val()
console.log(name);
console.log(nickname);
console.log(username);
console.log(password);
console.log(passwordConfirm);
console.log(phoneNumber);
console.log(profilePicture);
console.log(zipcode);
console.log(streetAdr);
console.log(detailAdr);
// 2. 유효성 검사
// 각 필드의 유효성을 검사합니다.
var isValid = true;
// 비밀번호가 8~16자 영문, 숫자, 특수문자를 사용하도록 검증
var passwordRegex = /^(?=.*[0-9])(?=.*[a-zA-Z])(?=.*\W)(?=\S+$).{8,16}$/;
if (!passwordRegex.test(password)) {
alert('비밀번호는 8~16자 영문, 숫자, 특수문자를 사용해야 합니다.');
return;
}
// 비밀번호 확인 유효성 검사
if (passwordConfirm.trim() === "") {
$("#passwordConfirmError").text("비밀번호 확인을 입력하세요.");
isValid = false;
} else if (password !== passwordConfirm) {
$("#passwordConfirmError").text("비밀번호가 일치하지 않습니다.");
isValid = false;
} else {
$("#passwordConfirmError").text("");
}
// 이름 유효성 검사
if (name.trim() === "") {
$("#nameError").text("이름을 입력하세요.");
isValid = false;
} else {
$("#nameError").text("");
}
// 이메일 유효성 검사 (이메일 형식 체크)
var emailPattern = /^(?:\w+\.?)*\w+@(?:\w+\.)+\w+$/;
if (!emailPattern.test(username)) {
$("#usernameError").text("올바른 이메일 형식이 아닙니다.");
isValid = false;
} else {
$("#usernameError").text("");
}
// 닉네임 유효성 검사
var nicknamePattern = /^[ㄱ-ㅎ가-힣a-z0-9-_]{2,10}$/;
if (!nicknamePattern.test(nickname)) {
$("#nicknameError").text("닉네임은 특수문자를 제외한 2~10자리여야 합니다.");
isValid = false;
} else {
$("#nicknameError").text("");
}
// 휴대폰 번호 유효성 검사
if (phoneNumber.trim() === "") {
$("#phoneNumberError").text("휴대폰 번호를 입력하세요.");
isValid = false;
} else {
$("#phoneNumberError").text("");
}
if (!isValid) {
// 유효성 검사에 실패한 경우 경고 메시지만 표시하고 폼을 서버로 제출하지 않음
return;
}
// 3. 가져온 정보를 data로 묶기
let data = {
"name" : name,
"nickname" : nickname,
"username" : username,
"password" : password,
"passwordConfirm" : passwordConfirm,
"phoneNumber" : phoneNumber,
"profilePicture" : profilePicture,
"zipcode" : zipcode,
"streetAdr" : streetAdr,
"detailAdr" : detailAdr
}
// 4. 클라에서 가져온 데이터를 서버로 전송 (이 예시에서는 URL이 '/register'로 가정)
$.ajax({
type: 'POST',
url: '/register', // 가입완료 버튼을 누르면 이 URL로 매핑!!! 마지막에 가는게xx
// 사용자가 입력한 정보들이 위에 변수로 수집되고, 그 정보는 아래의 data라는 객체에 저장된다.
// 이 객체는 json 데이터형식을 가지며, 각 입력필드의 값을 해당 필드의 이름으로 매핑한다!!
// 이 요청은 /register url로 보내지며, 서버의 컨트롤러 중에 @PostMappling("/register")가 달린 메소드가 호출된다.
// 이 메서드는 json형식의 데이터인 'userDto' 객체를 파라미터로 받는다.
data: JSON.stringify(data),
contentType: 'application/json', // JSON 형식의 데이터를 전송
success: function (response, status, xhr) { // response 객체에 success, msg가 json형식으로 존재함(컨트롤러에서 반환한 값이 json으로 들어옴)
console.log(response); //응답 body부 데이터
console.log(status); //"succes"로 고정인듯함
console.log(xhr);
if (xhr.status === 200) {
// 서버 응답의 상태 코드가 200일 때만 실행
alert('가입이 완료되었습니다!');
location.href = "/board";
} else {
// 가입 실패 처리
alert('서버에서 오류가 발생했습니다.');
}
},
error: function (response, status, xhr) {
// 서버 요청 실패 시 실행
console.log('실패했다...')
console.log(response); //응답 body부 데이터
alert('서버 요청 실패');
}
});
return true;
// // 5. 모든 필드가 유효한 경우 폼을 서버로 제출할 수 있습니다.
// if (isValid) {
// $("#registrationForm")[0].submit();
// }
}
비밀번호를 작성하지 않고 가입완료 버튼을 누르면, 알림창이 뜨고 기존의 데이터는 모두 지워지게 된다.
지워지지 않도록 하려면 어떻게 해야할까?
type="submit" 에서 type="button" 으로 변경해주었더니 해결되었다!!
<button class="btn btn-primary btn-lg btn-block" type="submit" id="registrationForm" onclick="register()">가입 완료</button>
<button class="btn btn-primary btn-lg btn-block" type="button" id="registrationForm" onclick="register()">가입 완료</button>
'Back-end > java' 카테고리의 다른 글
DBeaver에서 컬럼명 언더바 오류 해결 (0) | 2023.09.19 |
---|---|
시큐리티 저장이 안되는 문제.. (0) | 2023.09.18 |
회원가입 / 로그인 템플릿 예시 (0) | 2023.09.14 |
카카오 주소 검색 api 로 회원가입 시 주소 입력하기 & 에러 (0) | 2023.09.13 |
Path with "WEB-INF" or "META-INF 에러 (0) | 2023.09.13 |