参考网站:https://article.juejin.cn/post/7133579641382436878
在线地址:Vue (forked) - StackBlitz
主要代码
const onKeypress = (event) => {
if (event.target.innerText.length >= props.maxlength) {
event.preventDefault();
}
};
const onCompositionend = (event) => {
const diff = event.target.innerText.length - props.maxlength;
if (diff > 0) {
const range = document.createRange();
const sel = window.getSelection();
const offset = sel.anchorOffset;
const node = sel.anchorNode;
const text = node.textContent;
range.selectNodeContents(node);
sel.removeAllRanges();
setTimeout(() => {
sel.addRange(range);
sel.extend(node, offset);
document.execCommand('delete', false);
document.execCommand(
'insertText',
false,
text.substring(0, offset - diff)
);
}, 0);
}