728x90
회사 일로 간단한 웹 설문조사 폼을 개발한적 있다. 이 때 난감했던게 버튼을 연속클릭하거나 페이지를 뒤로 이동했을 시 기존 전송 데이터가 남아있어 DB에 중복으로 쌓였다. 이를 해결하기 위해 이전 페이지로 이동 및 버튼 더블 클릭을 막는 코드를 작성했다.
새로 고침 막기
// Ctrl + Key 형태의 조합키를 사용할 수 있는 코드
function doNotReload(){
// keyCode = 78 : n, 82 : r, 116 : f5,
if( (event.ctrlKey == true && (event.keyCode == 78 || event.keyCode == 82)) || (event.keyCode == 116) )
{
event.keyCode = 0;
event.cancelBubble = true;
event.returnValue = false;
}
};
document.onkeydown = doNotReload;
뒤로 가기 막기
// 웹 페이지가 로딩 되자마자 실행되게끔
$(document).ready(function(){
history.pushState(null, null, location.href);
window.onpopstate = function () {
history.go(1);
};
});
더블 클릭 막기
var doubleSubmitFlag = false;
function doubleSubmitCheck(){
if(doubleSubmitFlag){
return doubleSubmitFlag; // 기본값 false
}else{
doubleSubmitFlag = true; // 클릭시 doubleSubmitFlag는 true가 되고 false를 리턴한다.
return false;
}
}
function saveBtn() {
// doublsSubmitCheck()가 true면 return한다.
if(doubleSubmitCheck()) return;
location.href=""; // 이동하고싶은 페이지
}
'개발 공부 > 기록' 카테고리의 다른 글
[Linux] CentOS 로그인 시 bash-4.2$ 해결하기 (0) | 2023.04.27 |
---|---|
[SVN] 커밋 후 파일에 빨간색 화살표 (0) | 2023.02.08 |
[JAVA] AES128로 암복호화 코드 작성하기 (0) | 2023.01.03 |
[Tomcat] 이클립스 비정상 종료 후 톰캣 서버 충돌 해결하기 (0) | 2022.09.15 |
[MyBatis] snake_case에서 camleCase로 자동 변환 (0) | 2021.10.27 |