一尘不染

如何处理 在textarea中?

html

我想要一个文本区域,可以处理按 Tab 键的情况。

在默认情况下,如果您按 Tab 键,则焦点将离开文本区域。但是,当用户想要在文本区域中输入 Tab 键时会怎样呢?

我可以捕捉到此事件并将焦点返回到文本区域并将标签添加到 当前 光标位置吗?


阅读 253

收藏
2020-05-10

共1个答案

一尘不染


$("textarea").keydown(function(e) {
    if(e.keyCode === 9) { // tab was pressed
        // get caret position/selection
        var start = this.selectionStart;
        var end = this.selectionEnd;

        var $this = $(this);
        var value = $this.val();

        // set textarea value to: text before caret + tab + text after caret
        $this.val(value.substring(0, start)
                    + "\t"
                    + value.substring(end));

        // put caret at right position again (add one for the tab)
        this.selectionStart = this.selectionEnd = start + 1;

        // prevent the focus lose
        e.preventDefault();
    }
});
2020-05-10