2015/12/18

IE 8 버전에서 event.preventDefault() 작동 안됨 // Internet Explorer 8, onsubmit, JavaScript

1. onsubmit() 으로 나름 고급지게 처리한 부분이 IE 8 버전에서는 오류 발생!

HTML 정의(?)에 충실한 처리를 하겠다며

form 태그에다가 onsubmit을 걸어놓고

입력값 등이 submit 조건에 어긋나면, event.preventDefault() 와 return false 로 submit을 거르는 식으로 꾸몄었는데

IE 8은 event.preventDefault() 호출 부분에서 에러가 발생. 띠용~!


2. 해결 방법

event.preventDefault()가 지원되지 않는 브라우저(?)에 대해서는 event.returnValue = false 를 하면 된다고 함.

브라우저에서(?) event.preventDefault()를 지원하는지 확인해보고,

지원되면 preventDefault, 그렇지 않으면 returnValue=false 로 처리하면 된다고...

event.preventDefault ? event.preventDefault() : (event.returnValue = false);

- event.preventDefault() function not working in IE( http://stackoverflow.com/questions/1000597/event-preventdefault-function-not-working-in-ie )


3. 참고 - event.preventDefault()가 필요한 이유

onsubmit을 사용하는 구조에서 submit을 막아야 하는 경우에 return false 만으로는 불충분하다고 함.

onsubmit에 걸린 함수를 실행하다가 오류발생 등으로 튕겨 나가게 되면 return false가 실행되기 전에 다른 return 값을 가지고 return이 되면서 submit이 그대로 진행이 될 수 있다고 함.

따라서, event.preventDefault() 로 기본 동작을 일단 막아놓고 작업을 해야 된다고.

function mySubmitFunction(evt) {
  evt.preventDefault();
  someBug();
  return false;
}

- How to prevent form from being submitted? ( http://stackoverflow.com/questions/3350247/how-to-prevent-form-from-being-submitted )


댓글 없음:

댓글 쓰기