html 让textarea支持tab键输入,而不是切换焦点

function initTextAreaTab(textarea, spaceCount = 8){
        var func = function(e){
                if(event.code !== "Tab") return true;
            
                event.preventDefault();
            
                let start = this.selectionStart;
                let end = this.selectionEnd;
                var indent = '';
                for(var i = 0; i < spaceCount; i++){indent += ' ';}
            
                if(start === end){
                    document.execCommand('insertText',false,indent);
                }
                else {
                    let strBefore = this.value.slice(0, start);
                    let curLineStart = strBefore.includes('\n') ? strBefore.lastIndexOf('\n') + 1 : 0;
                    let strBetween = this.value.slice(curLineStart, end + 1);
                    let newStr = "  " + strBetween.replace(/\n/g, '\n  ');
                    let lineBreakCount = strBetween.split('\n').length;
                    let newStart = start + 2;
                    let newEnd = end + (lineBreakCount + 1) * 2;
            
                    this.setSelectionRange(curLineStart, end);
                    document.execCommand("insertText", false, newStr);
                    this.setSelectionRange(newStart, newEnd);
                }
            };
            
            $(textarea).off(func);
            $(textarea).on('keydown', func);
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值