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
- Ethereum
- 개발
- 문자열
- solidity
- pythonic
- javascript
- 마스터링비트코인
- 백서
- 암호화폐
- 비트코인
- keras
- DAPP
- 파이썬
- 개인키
- 주소
- 블록체인
- Redis
- smart contract
- 블록체인개발
- 스마트컨트랙트
- 마스터링 이더리움
- 알고리즘
- python
- 마스터링 비트코인
- node js
- 이더리움
- 솔리디티
- js
- 레디스
- 공개키
Archives
- Today
- Total
개발이야기
[JS] onsubmit 함수내에서 ajax 사용시 주의할 점 본문
form 태그를 submit을 실행하기전 체크해야할 상황이 있을때 onsubmit 함수를 선언하여 사용합니다.
onsubmit 함수내에서 ajax 함수를 사용할 때 주의해야할 점이 있습니다.
onsubmit 함수에서 return false는 submit 액션을 실행하지 않는것을 의미하는데요.
이 return false를 ajax내에서 선언할시 submit 액션이 그대로 실행됩니다.
따라서 ajax내에서 flag 변수를 사용하여 조건에 따라 true / false 값으로 바꿔준 후 마지막에 return flag를 하셔야 원하는 결과를 이끌어내실 수 있습니다.
아래 코드는 form 태그를 검증하는 api를 호출하고 그 응답값이 false인 경우 submit을 못하게 해주는 함수입니다.
function validateForm() {
var flag = true;
var data = {result:true}
$.ajax({
type: "POST",
url: "/api/formCheck",
dataType: 'json',
data: data,
async: false,
success: function (res) {
if (!res.result) {
var msg = '에러';
alert(msg);
flag = false;
} else {
flag = true;
}
}
})
return flag;
}
위에 코드처럼 ajax 내에서 flag 값을 true나 false로 변경한 후 validateForm 끝에서 flag 를 반환하면 의도한 대로 동작하게 됩니다.
또한 ajax의 async: false 옵션을 추가하여 flag에 값이 제대로 반영되게 합니다.
참고
[1] https://www.w3schools.com/jsref/event_onsubmit.asp
Comments