prevent
기본 이벤트 방지
태그 중에는 기본 이벤트가 정의되어 있는 태그들이 존재한다. 예를 들면 다음과 같은 것들이 있다.
<a>
는 클릭 시href
속성으로 자동 이동한다.<form>
은 submit 발생 시action
속성으로 데이터를 전송한다.
이러한 기본 이벤트를 방지하기 위해서 JS와 jQuery는 다음과 같이 처리해야한다.
inline html
<a onclick="return false">click</a>
javascript
document.querySelector("a").addEventListener("click", function(e){
e.preventDefault();
});
jQuery
$("a").click(function(e){
//return false;
//또는
//e.preventDefault();
});
VueJS는 이러한 기본이벤트 방지를 .prevent
수식어로 처리한다.
<a href="#" v-on:click.prevent="testFunction">click</a>
사용 예제 - a 태그
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Vue event</title>
</head>
<body>
<div id="app">
<a href="https://www.google.com" v-on:click="testFunction">click</a>
<br><br>
<a href="https://www.google.com" v-on:click.prevent="testFunction">prevent default click</a>
</div>
<script src="https://unpkg.com/vue@next"></script>
<script>
const app = Vue.createApp({
methods: {
testFunction() {
window.alert("testFunction 실행");
}
}
});
app.mount("#app");
</script>
</body>
</html>
사용 예제 - form 태그
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Vue event</title>
</head>
<body>
<div id="app">
<h1>기본이벤트 방지 미설정</h1>
<form action="https://www.google.com/search" method="get" v-on:submit="testFunction">
<input type="text" name="q" placeholder="검색어 입력">
<button type="submit">검색</button>
</form>
<h1>기본이벤트 방지 설정</h1>
<form action="https://www.google.com/search" method="get" v-on:submit.prevent="testFunction">
<input type="text" name="q" placeholder="검색어 입력">
<button type="submit">검색</button>
</form>
</div>
<script src="https://unpkg.com/vue@next"></script>
<script>
const app = Vue.createApp({
methods: {
testFunction() {
window.alert("testFunction 실행");
}
}
});
app.mount("#app");
</script>
</body>
</html>
Last updated