div 设置为可编辑模式


需添加  contenteditable="true"

<div id="add-content" contenteditable="true"  style="border: 1px solid gray;" >

监听事件keydown 、textInput 、input:

<script>
var content = document.getElementById('add-content')
//注册中文的输入事件,
var isCN = false;
content.addEventListener('compositionstart',function(){
    isCN = true;
});
content.addEventListener('compositionend',function(){
    isCN = false;
})
//注册文本输入事件,获取光标的起止偏移数据,如果是非中文以及超出长度的输入,则撤销本次操作
var txtAnchorOffset, txtFocusOffset;
content.addEventListener("textInput",function(event){
    var _sel = document.getSelection();
    txtAnchorOffset = _sel.anchorOffset;
    txtFocusOffset = _sel.focusOffset;
    //必须加上isCN的判断,否则获取不到正确的光标数据
    if(!isCN && this.textContent.length >= noteMax){
        event.preventDefault();
    }
});
//注册粘贴事件,获取粘贴数据的长度
var pastedLength;  
content.addEventListener("paste",function(event){
    if(!event.clipboardData) return;
    pastedLength = event.clipboardData.getData('Text').length;
});

//注册输入事件,对输入的数据进行
content.addEventListener("input",function(event){
    setTimeout(function(){
        if(!isCN){
            var _this = content;
            if(_this.textContent.length > noteMax){
                var data = _this.textContent;
                if(pastedLength > 1){
                    oldDate = data.slice(0, txtAnchorOffset) + data.slice(txtFocusOffset+pastedLength, data.length);
                    //粘贴字符串长度置为0,以免影响到下一次判断。
                    pastedLength = 0;
                } else {
                    oldDate = data.slice(0, txtAnchorOffset) + data.slice(txtFocusOffset, data.length);
                }
                //再次截取最大长度字符串,防止溢出
                _this.textContent = oldDate.slice(0, noteMax);
                //光标移动到起始偏移位置
                document.getSelection().collapse(_this.firstChild, txtAnchorOffset);47             }
        }
    }, 0);
   //content.focus(); 
});
</script>

 参照:https://www.cnblogs.com/echon-cw/p/9809524.html


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM