我遵循codepen building a word counter modul的示例,除了计数,我需要将输入限制为30个字,因此用户无法再写。我不知道在哪里实施我需要的东西。我想我可以使用像splice(开头,结尾)这样的东西。
这两个人正在做计数词:
calculate() {
let text = this.quill.getText();
if (this.options.unit === 'word') {
text = text.trim();
return text.length > 0 ? text.split(/\s+/).length : 0
} else {
return text.length;
}
}
update() {
var length = this.calculate();
var label = this.options.unit;
if (length !== 1) {
label += 's';
}
this.container.innerHTML = length + ' ' + label;
}
我不知道是否必须添加新方法或修改其中一种方法。类似的东西:
limitWords() {
let text = this.quill.getText();
if (text.length > 30) {
text = text.splice(0, 30);
}
return text.length;
}
这显然失败了,任何指导都会非常感激!
更新
感谢@maioman,我得到了一个更接近我需要的方法,通过做以下我可以"限制"到30的话。
问题
如果我继续输入预览词会消失,而不是在输入字段中输入未定义:
update() {
var length = this.calculate();
if (length > 30) {
this.restrict();
}
var label = this.options.unit;
if (length !== 1) {
label += 's';
}
this.container.innerHTML = length + ' ' + label;
}
restrict() {
let text = this.quill.getText();
text = text.replace(/\s+.+/);
this.quill.setText(text);
this.update()
}
我尝试了什么:
let text = this.quill.getText().slice(0, 30);
这不会抛出一个未定义的但它不起作用。