TextareaIndent
textarea内のコードを選択してタブキーを押すとインデントがつきます。
ソース:
textareaindent.js
$('textarea').on('keydown', function(e) { if (e.keyCode === 9) { var isShift = e.shiftKey; var elm = e.target; var txt = elm.value; var slct = {left: elm.selectionStart, right: elm.selectionEnd}; if(slct.left == slct.right && !isShift) { elm.value = txt.substr(0, slct.left) + '\t' + txt.substr(slct.left, txt.length); slct.left++; slct.right++; } else { var lineStart = txt.substr(0, slct.left).split('\n').length - 1; var lineEnd = txt.substr(0, slct.right).split('\n').length - 1; var lines = txt.split('\n'); for(i = lineStart; i <= lineEnd; i++) { if(!isShift) { lines[i] = '\t' + lines[i]; if(i == lineStart) slct.left++; slct.right++; } else if(lines[i].substr(0, 1) == '\t') { lines[i] = lines[i].substr(1); if(i == lineStart) slct.left--; slct.right--; } } elm.value = lines.join('\n'); } elm.setSelectionRange(slct.left, slct.right); return false; } });