기본적으로 textarea
에서 Tab
키를 누르면 다음 입력 필드로 포커스가 이동한다. 하지만 코드 편집기처럼 동작하도록 만들고 싶다면, Tab 키를 눌렀을 때 textarea 내부에 Tab 공백(\t
)을 삽입하도록 설정할 수 있다.
keydown
이벤트를 활용해 Tab
키를 누를 때 textarea 내부에서 공백을 삽입하는 방법은 아래를 참고한다.
아래는 Tab
키를 눌렀을 때 textarea
에 Tab을 추가하고, 커서 위치를 조정하는 코드다.
<textarea id="editor" rows="10" cols="50"></textarea>
<script>
document.getElementById("editor").addEventListener("keydown", function (event) {
if (event.key === "Tab") {
event.preventDefault(); // 기본 동작 방지 (포커스 이동 방지)
let textarea = event.target;
let start = textarea.selectionStart;
let end = textarea.selectionEnd;
// 현재 커서 위치에 탭 추가
let value = textarea.value;
textarea.value = value.substring(0, start) + "\t" + value.substring(end);
// 커서를 추가한 탭 이후로 이동
textarea.selectionStart = textarea.selectionEnd = start + 1;
}
});
</script>
@nullvuild