Frontend
[Javascript] 한글 입력 후 엔터 입력 시 끝글자 중복 문제 해결
정 효
2024. 7. 7. 16:29
채팅 도메인을 개발하면서 한글 입력 후 엔터를 눌러 전송하면 위와 같이 끝 글자가 중복해서 입력되는 문제가 있었다.
알고보니 한글은 영어와 달리 자음과 모음을 조합하는 문자이기 때문에 발생하는 현상이었다.
해결방법은 간단하다.
$(".type_msg").keydown(function (e) {
if (e.key === "Enter") {
$('.send_btn').click();
e.preventDefault();
}
});
위는 원래 작성했던 코드이다.
위에 keydown을 keypress로 바꿔주면 해당 현상이 발생하지 않는다.
하지만 keypress는 현재 deprecated 되어있으니 가급적 다른 방법을 사용하는 것이 좋다.
document.getElementsByClassName("type_msg")[0].addEventListener("keydown", (e) => {
console.log(e.isComposing);
if (e.key === "Enter") {
if (e.isComposing == false) {
$('.send_btn').click();
e.preventDefault();
}
}
});
KeyboardEvent의 isComosing 속성을 이용하면 입력한 키가 조합문자인지 확인할 수가 있다.
위와 같이 작성한 후 console을 확인해보면 한글 입력 시 true 가 찍힌다.
false 일 때만 원하는 동작을 수행하게 하면 된다.
정상적으로 동작하는 모습