본문 바로가기
Frontend/Javascript

return false로 안넘어가고 submit되는 경우

by 새벽물망초 2022. 3. 25.

회원가입 시, 빈 데이터가 있을 경우 경고창이 뜨도록 하려고 한다

 

문제]

조건을 m_id == '' 두고 아이디값을 공백으로 두고 submit 시, return false에 의해 submit되지 않아야 하는데

submit이 되면서 redirect 되었고, db에 공백의 아이디,비번,.등의 회원정보가 등록되었다

(tbl 생성시 column을 not null로 넣었는데 어떻게 공백이 들어갔을까..?)

 

해결]

<html>

<form class="user" name="member_regist" >
<div class="form-group row">
	<div class="col-sm-6 mb-3 mb-sm-0">
		<label>아이디</label>
		<input type="text" class="form-control" name="m_id" id="m_id">
	</div>
</div>
			
<div class="form-group row">
	<div class="col-sm-6 mb-3 mb-sm-0">
		<label>비밀번호</label>
		<input type="text" class="form-control" name="m_passwd" id="m_passwd">
	</div>
</div>
			
<div class="form-group row">
	<div class="col-sm-6 mb-3 mb-sm-0">
		<label>이름</label>
		<input type="text" class="form-control" name="m_name" id="m_name">
	 </div>
</div>

<input type="submit" class="form-control" value="가입하기" onclick="memberRegist();">
</form>

 

<javascript>

	function memberRegist() {
		let thisform = document.member_regist;
		let m_id = document.getElementById('m_id').value;
		let m_passwd = document.getElementById('m_passwd').value;
		let m_name = document.getElementById('m_name').value;
		//let m_phone = document.getElementById('m_phone').value;
		if (m_id == '') {
			alert('아이디를 입력하세요');
			return false;
		} else if (m_passwd == '') {
			alert('비밀번호를 입력하세요');
			return false;
		} else if (m_name == '') {
			alert('이름을 입력하세요');
		} else {
			thisform.method = "post";
			thisform.action = "/member/insert";
			thisform.submit();
			alert ('회원가입 되었습니다');
		}
	};
// [else부문 수정] 
// return 받아왔으니 else도 return으로 통일하는게 맞나
thisform.method = "post";
thisform.action = "/member/insert";
//thisform.submit(); 
alert ('회원가입 되었습니다'); // alert -> return 순으로 가야 경고창이 뜸
return true;

- form 내에 method와 action을 js 마지막으로 빼준다음(thisform.submit 시, 전송되도록)

- 가입이 안되게 할 시엔 return false으로 반환해줌

 

참고]

https://hoyashu.tistory.com/181

 

[Javascript] 자바스크립트로 form 폼체크 후 submit하기

1️⃣ html form태그에 action을 지운다. > onsubmit="return false;" 을 적어준 이유 : 폼체크 후 input내 내용이 삭제되지 않게 하기 위함임!  (참고링크) 2️⃣ if문으로 폼태그의 정보를 확인한다. 3️⃣ fo..

hoyashu.tistory.com

 

'Frontend > Javascript' 카테고리의 다른 글

02 객체  (0) 2022.10.28
01 기초문법  (0) 2022.10.28
alert창 나타나게 하는법  (0) 2022.03.24
javascript void(0) 의미  (0) 2021.12.07
var, let, const 비교 (1)  (0) 2021.12.06

댓글