이벤트가 다른 이벤트로 전파되기 전에 폼 전송과 같은 이벤트를 취소해야 한다.
이벤트를 취소하는 재사용 가능한 함수를 만들면 된다.
//이벤트 취소
function cancelEvent(event){
if(event.preventDefault){
event.preventDefault();
}else{
event.returnValue = false;
}
}
...
function validateForm(evt){
evt = evt || window.event;
cancelEvent(evt);
}
처리를 완료하기 전에 이벤트를 취소하고 싶을 때가 있다. 예를 들어 폼 요소가 유효하지 않으면 기본 폼 전송 동작을 막아버리는 것이 이에 해당한다.
순수한 DOM 레벨 0 이벤트 핸들링은 false를 반환하여 이벤트를 취소할 수 있다.
function formSubmitFunction(){
...
if(bad){
return false;
}
}
더 복잡한 이벤트 핸들링에서는 이벤트 모델에 상관없이 이벤트를 취소할 수 있는 함수를 만들어야 한다.
이벤트 객체에 preventDefault
라는 메서드가 있으면 호출한다. preventDefault
메서드는 폼 전송과 같은 기본 동작을 막는다.
preventDefault
를 지원하지 않으면 returnValue
라는 이벤트 속성을 false로 설정한다. 이 방식은 DOM 레벨 0 이벤트 핸들링에서 false를 반환하는 것과 같은 효과를 낸다.