如何限制草稿js中的最大字符数?
我可以得到类似状态的长度,但是如何停止更新组件呢?
var length = editorState.getCurrentContent().getPlainText('').length;
您应该定义handleBeforeInput
和支持handlePastedText
。在处理程序函数中,您检查当前内容的长度+粘贴文本的长度,如果达到最大值,则应返回'handled'
字符串。
UPD 21.03.2018:升级到最新版本的react / react-dom(16.2.0)和Draft.js(0.10.5)。
工作示例-https://jsfiddle.net/Ln1hads9/11/
const {Editor, EditorState} = Draft;
const MAX_LENGTH = 10;
class Container extends React.Component {
constructor(props) {
super(props);
this.state = {
editorState: EditorState.createEmpty()
};
}
render() {
return (
<div className="container-root">
<Editor
placeholder="Type away :)"
editorState={this.state.editorState}
handleBeforeInput={this._handleBeforeInput}
handlePastedText={this._handlePastedText}
onChange={this._handleChange}
/>
</div>
);
}
_getLengthOfSelectedText = () => {
const currentSelection = this.state.editorState.getSelection();
const isCollapsed = currentSelection.isCollapsed();
let length = 0;
if (!isCollapsed) {
const currentContent = this.state.editorState.getCurrentContent();
const startKey = currentSelection.getStartKey();
const endKey = currentSelection.getEndKey();
const startBlock = currentContent.getBlockForKey(startKey);
const isStartAndEndBlockAreTheSame = startKey === endKey;
const startBlockTextLength = startBlock.getLength();
const startSelectedTextLength = startBlockTextLength - currentSelection.getStartOffset();
const endSelectedTextLength = currentSelection.getEndOffset();
const keyAfterEnd = currentContent.getKeyAfter(endKey);
console.log(currentSelection)
if (isStartAndEndBlockAreTheSame) {
length += currentSelection.getEndOffset() - currentSelection.getStartOffset();
} else {
let currentKey = startKey;
while (currentKey && currentKey !== keyAfterEnd) {
if (currentKey === startKey) {
length += startSelectedTextLength + 1;
} else if (currentKey === endKey) {
length += endSelectedTextLength;
} else {
length += currentContent.getBlockForKey(currentKey).getLength() + 1;
}
currentKey = currentContent.getKeyAfter(currentKey);
};
}
}
return length;
}
_handleBeforeInput = () => {
const currentContent = this.state.editorState.getCurrentContent();
const currentContentLength = currentContent.getPlainText('').length;
const selectedTextLength = this._getLengthOfSelectedText();
if (currentContentLength - selectedTextLength > MAX_LENGTH - 1) {
console.log('you can type max ten characters');
return 'handled';
}
}
_handlePastedText = (pastedText) => {
const currentContent = this.state.editorState.getCurrentContent();
const currentContentLength = currentContent.getPlainText('').length;
const selectedTextLength = this._getLengthOfSelectedText();
if (currentContentLength + pastedText.length - selectedTextLength > MAX_LENGTH) {
console.log('you can type max ten characters');
return 'handled';
}
}
_handleChange = (editorState) => {
this.setState({ editorState });
}
}
ReactDOM.render(<Container />, document.getElementById('react-root'))
问题内容: 我正在使用PostgreSQL,并且在表中有一列,其中包含非常长的文本。我想在查询中选择此列,但限制其显示长度。 就像是: 我该怎么做? 问题答案: 您可以做的是使用PostgreSQL的substring()方法。以下两个命令之一将起作用:
草稿是没有日期的文章。它们是你还在创作中而暂时不想发表的文章。想要开始使用草稿,你需要在网站根目录下创建一个名为 _drafts 的文件夹(如在目录结构章节里描述的),并新建你的第一份草稿: |-- _drafts/ | |-- a-draft-post.md 为了预览你拥有草稿的网站,运行带有 --drafts 配置选项的 jekyll serve 或者 jekyll build。此两种方法
我有一个带有SpringWeb服务的SpringBoot2应用程序,我试图限制传入请求的最大大小。我尝试使用以下属性,但不起作用。 您知道使用SpringWeb服务在SpringBoot2应用程序中限制传入请求最大大小的任何有效解决方案吗?在Spring Web服务文档中,有信息表明Spring Web服务提供了基于Sun的JRE 1.6 HTTP服务器的传输。也许这是个问题?
本文向大家介绍关于URL最大长度限制的相关资料查证,包括了关于URL最大长度限制的相关资料查证的使用技巧和注意事项,需要的朋友参考一下 在开发调试支付宝接口时,突然发现支付宝接口的URL很长,远远大于之前自己印象中的255个字符。赶紧搜索查证了一番,理解如下: URL不能大于255bytes的说法确实存在,在RFC2616中提到: 从上一点也可以看出,255bytes的说法也是为了兼容性考虑。实际
问题内容: 我想限制a的最大大小,以对正在实现的各种哈希算法进行度量。我在的一个重载构造函数中查看了loadfactor 。 我尝试在构造函数中将loadFactor设置为0.0f(这意味着我不希望HashMap的大小从EVER增大),但将此无效: 还有另一种方法来限制它的大小,使其永远不会增长吗? 问题答案: 有时越简单越好。
问题内容: 我是否可以使用Spring Security来限制能够同时登录网站的最大用户数量? 绝对不是并发会话控制参数。例如,我要限制最大只允许1000个用户同时登录。如果超过该通知页面说明已超过最大用户数 问题答案: 您可以通过访问SessionRegistry来查找当前登录的用户,从而使用Spring Security的并发会话控制。在Spring Security 3中,Concurren