10/10

김승우·2020년 10월 12일
0
post-thumbnail

1. input에 blur, keyup.enter 두개의 이벤트를 설정했을 경우, 하나의 이벤트가 실행되면 다른 하나의 이벤트가 실행되는 것을 막는 방법??

  • 현재 상태 :
    Enter를 입력해서 타이틀을 수정하는 이벤트가 발생 =>
    input 태그를 "display:none" 처리하므로 "blur"이벤트도 발생 =>
    수정 api가 두번 호출된다.

  • 현재 상태2 :
    타이틀 값이 빈 공백일 경우 에러 처리를 하고싶음 =>
    공백 값을 체크해서 alert메시지를 띄우고, 다시 input 태그에 focus() => focus가 빠져나감
    => blur 이벤트 발생 => 원하던 결과가 아님

  • 흐름 :

enter 입력 => api 호출 =>input 태그 unmounted, blur 이벤트 발생 => api 호출

  • 흐름2 :
    enter 입력 => 빈 공백 => alert 메시지 => blur

  • 해결 방안 :

  1. 플래그 변수를 두어서, enter이벤트가 발생했는지 체크, 발생했으면 blur이벤트 안에서 editListTitle 이벤트를 호출 하지 않도록 한다.

  2. blur 이벤트 발생 후 다시 focus => 불가능..?

  3. keyup, blur 이벤트 핸들러를 분리

profile
사람들에게 좋은 경험을 선사하고 싶은 주니어 프론트엔드 개발자

0개의 댓글