こういうhtmlがあったとして
<textarea id="tab"></textarea>
こう書くといいかんじ
(DOM取得周りとかaddEventListener
とattachEvent
の差異は適当に埋めてください)
document.getElementById('tab').addEventListener('keydown', function (e) {
var elem, end, start, value;
if (e.keyCode === 9) {
if (e.preventDefault) {
e.preventDefault();
}
elem = e.target;
start = elem.selectionStart;
end = elem.selectionEnd;
value = elem.value;
elem.value = "" + (value.substring(0, start)) + "\t" + (value.substring(end));
elem.selectionStart = elem.selectionEnd = start + 1;
return false;
}
});
おまけ: CoffeeScriptだとこう(上記コードの変換元)
document.getElementById('tab').addEventListener 'keydown', (e) ->
if e.keyCode is 9
e.preventDefault() if e.preventDefault
elem = e.target
start = elem.selectionStart
end = elem.selectionEnd
value = elem.value
elem.value = "#{value.substring 0, start}\t#{value.substring end}"
elem.selectionStart = elem.selectionEnd = start + 1
false