728x90
<form> 요소에서 제출(Submit) 버튼 사용 시 기본 동작 막는 방법
들어가며
- @<form>@ 요소 안에 @type@이 @submit@인 버튼을 두고, 클릭할 때, 폼 제출 효과가 발생한다.
- 해당 버튼을 클릭할 때 폼 데이터가 서버로 전송되면서 페이지가 새로고침 되는데, 이것은 폼의 기본 동작이다.
<form>
// ...
<button type="submit">제출</button>
</form>
- 이때 폼 제출 효과 막을 수 있는 방법을 정리해본다.
방법
방법 1 : @<button>@ 요소의 @type@ 속성을 @button@으로 지정하기
- @<button>@ 요소의 @type@ 속성을 @submit@이 아닌 @button@으로 지정하는 방법이다.
function handleSubmit() {
console.log("Submitted!");
}
<form>
<button type="button" onClick={handleSubmit}>로그인</button>
</form>
방법 2 : @<button>@ 요소의 @onClick@ 이벤트 함수에 @event.preventDefault()@ 코드 넣어주기
- @<button>@ 요소에 @onClick@ 이벤트 함수를 연결해준 후, 해당 함수에 @event.preventDefault()@ 코드를 넣어준다.
function handleSubmit(event) {
event.preventDefault(); // 추가
console.log("Submitted!");
}
<form>
<button type="submit" onClick={(event) => handleSubmit(event)}>로그인</button>
</from>
방법 3 : @<form>@ 요소에 @onSubmit@ 이벤트 함수 연결해준 후, 해당 함수에 @event.preventDefault()@ 코드 넣어주기
- @<form>@ 요소에 @onSubmit@ 이벤트 함수를 연결해준 후, 해당 함수에 @event.preventDefault()@ 코드를 넣어준다.
function handleSubmit(event) {
event.preventDefault(); // 추가
console.log("Submitted!");
}
<form onSubmit={handleSubmit}>
<button type="submit">로그인</button>
</from>
- 또는 다음과 같이 할 수 있다.
<form onSubmit="return false;">
<button type="submit">로그인</button>
</from>
방법 4 : 자바스크립트 코드로 폼의 기본 동작 막기
- @getElementById@ 또는 @querySelector@ 등을 이용하여 요소를 선택하고 @addEventListener@를 이용하여 폼의 기본 동작을 막는 @event.preventDefault()@ 코드를 넣어주는 방법이다.
<form id="myForm">
<button type="submit">로그인</button>
</form>
<script>
document.getElementById("myForm").addEventListener("submit", function(event){
event.preventDefault(); // 추가
console.log("Submitted!");
});
</script>
참고
<form> - HTML: Hypertext Markup Language | MDN
HTML <form> 요소는 정보를 제출하기 위한 대화형 컨트롤을 포함하는 문서 구획을 나타냅니다.
developer.mozilla.org
Event: preventDefault() method - Web APIs | MDN
The preventDefault() method of the Event interface tells the user agent that if the event does not get explicitly handled, its default action should not be taken as it normally would be.
developer.mozilla.org
728x90
'Programming > React.js' 카테고리의 다른 글
[React.js] 리액트에서의 상태 관리 방법 (0) | 2024.06.30 |
---|---|
[React.js] memo() 사용할 때 주의할 점 (0) | 2024.06.25 |
[React.js] useEffect와 useCallback (0) | 2024.06.24 |
[React.js] useReducer 훅 (0) | 2024.06.07 |
[React.js] map 함수를 사용할 때 중괄호({})와 소괄호(()) (0) | 2024.05.29 |
[React.js] 토스트 메시지 띄우기 간단 예제 (ReactDOM.createPortal) (0) | 2024.05.21 |
[React.js] useImperativeHandle과 forwardRef (0) | 2024.05.21 |
[React.js] 부모 컴포넌트에서 자식 컴포넌트로 요소 넘기는 방법 (0) | 2024.05.14 |