HTML标签textarea支持tab键

2014-01-20 17:49  2393人阅读  评论 (0)

码农很需要的,让textarea支持tab键

HTML

<textarea id="content" class="Jmarkdown">
#require <stdio.h>

void main() {
    printf("hello world!\n");
}
</text area>

jQuery

$(".Jmarkdown").keydown(function(e){
    if (e.keyCode == 9) {
        var start = this.selectionStart;
        var end = this.selectionEnd;
        // 判断选取文本
        if (start == end) { // 单行
            // 是否按住Shift键
            if (e.shiftKey) {

            } else {
                this.value = this.value.substr(0, start) + "\t" + this.value.substr(end);
                this.setSelectionRange(start + 1, end + 1);
            }
        } else { // 多行
            var text = this.value.substr(start, end - start);
            // 是否按住Shift键
            if (e.shiftKey) {
                var len = text.split("\n\t").length - 1;
                text = text.replace(/\n\t/g, "\n");
                this.value = this.value.substr(0, start) + text + this.value.substr(end);
                this.setSelectionRange(start, end - len);
            } else {
                var len = text.split("\n").length;
                text = "\t" + text.replace(/\n/g, "\n\t");
                this.value = this.value.substr(0, start) + text + this.value.substr(end);
                this.setSelectionRange(start, end + len);
            }
        }
        // 取消默认动作
        e.preventDefault();
    }
});