업데이트:

예를 들어 input 요소에 값을 입력하고 enter키를 누르면 submit이 되는데, 값을 입력하지 않고도 enter키를 누르면 원치않는 submit이 되는 현상이 발생한다. 해결책은 Javascript로 이벤트를 무효화해주면 된다. form요소가 submit을 처리하므로 form요소에 이벤트를 바인딩해줘야 함

1
2
3
<form name="myForm">
    <input type="text" placeholder="검색어를 입력하세요">
</form>
1
2
3
4
5
document.myForm.addEventListener("keydown", evt => {
    if ((evt.keyCode || evt.which) === 13) {
        evt.preventDefault();
    }
});

keyCode, which는 deprecate될 속성이라고 하니 다음과 같은 방식으로 작성해주자.

1
2
3
if (evt.code === "Enter") {
    evt.preventDefault();
}

code 속성은 IE에서 지원되지 않으므로 key 속성으로 대체할 수 있음.

inline Javascript로 작성할 수도 있다. 구조와 표현의 분리라는 측면에서 봤을 때 좋은 방법은 아니지만 그냥 이런 방법도 있다는 것임.

1
2
3
<form onkeydown="return event.key != 'Enter';">
    <input type="text" placeholder="검색어를 입력하세요">
</form>

See the Pen rNxEvBy by sel (@selucky) on CodePen.

Hero image from Alltechbuzz