Windows 에서는 (Mac, Linux 등 딴 건 몰겠다. 테스트 하기 귀찮아-_-)
IE 외의 다른 브라우저 (FF, Opera) 에서 한글을 입력하는 중에는 onKeyUp, onKeyDown, onKeyPress 이벤트가 모두 발생하지 않는다.
따라서 자동완성 같이 한글이 입력되는 과정을 트래킹해야 하는 경우 난감해지는데...
그래서 그 동안 비 IE 에서는 Interval 타이머를 돌려서 텍스트필드의 값을 주기적으로 체크해 변화가 생기면 반영시키는 식으로 만들었었고,
이번에도 그렇게 만들고 있다가, 문득 뭔가 방법이 없을까 해서 인터넷을 뒤져봤지만
다른 사람들도 다들 그렇게 쓰고 있는 듯 했다-_-;
그러다가 onFocus 일때 타이머 만들고 onBlur 일때 타이머 죽이고,
타이머에서는 값 바뀌는지 체크하고, 뭐 이런 코드 작성할 필요 없이 편리하게 한방에 사용할 수 있는 클래스를 만들어 봤다.
비 IE 에서도 한글을 입력하는 도중에 onKeyUp 이벤트가 발생하도록 해주는 코드이다.
구현 방법은 타이머를 돌려서 텍스트필드 값이 변화가 발생하면 createEvent 로 keyUp 이벤트를 생성해서 억지로(?) 발생시키게 했다.
onKeyDown, onKeyPress, onKeyUp 중에서 onKeyUp 만 지금 막 입력한 값이 반영된 이후에 발생하는 이벤트라서 onKeyUp 를 흉내내기로 했다.
한가지 문제는 onKeyUp 이벤트가 빈번히 발생한다는 거...
뭐 이건 onKeyUp 핸들러에서 텍스트필드 값이 안 바뀌었으면 무시하도록 하면 된다.
아래는 사용 예.
- 영양가 있는 포스팅인가요
-
(총 2분이 투표해서 4.0점)
4.0점
Trackback Address :: http://hooriza.com/trackback/1358