我正在按照 codepen除了计数之外构建单词计数器模块的示例,我需要将输入限制为 30 个单词,这样用户就不能再写了。我不知道在哪里实现我需要的东西。我想我可以使用类似 splice(begin, end) 的东西。
这两个正在做数词的事情:
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);
这不会引发未定义,但它不起作用。