LoginSignup
18
18

More than 5 years have passed since last update.

textareaで<TAB>入力したい

Last updated at Posted at 2014-10-04

こういうhtmlがあったとして

<textarea id="tab"></textarea>

こう書くといいかんじ
(DOM取得周りとかaddEventListenerattachEventの差異は適当に埋めてください)

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
18
18
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
18
18