textareaでタブを入力できるようにする

document.querySelector("textarea").addEventListener("keydown", function(e) {
    if (e.keyCode === 9) {
        e.preventDefault();
        var elem = e.target;
        var val = elem.value;
        var pos = elem.selectionStart;
        elem.value = val.substr(0, pos) + '\t' + val.substr(pos, val.length);
        elem.setSelectionRange(pos + 1, pos + 1);
    }
});

selectionStartで現在のカーソル位置を取得してタブを間に挟んだ値を入れる。setSelectionRangeでカーソル位置をタブの後ろにもってくる。