Javascript 介质编辑器中输入的最大长度/字符数

Javascript 介质编辑器中输入的最大长度/字符数,javascript,ruby-on-rails-3,validation,medium-editor,Javascript,Ruby On Rails 3,Validation,Medium Editor,我正在使用媒体编辑器 初始化媒体编辑器类的代码如下所示 var editor = new MediumEditor(el, { placeholder: false, toolbar: false }) 我使用以下方法为我的自定义字段绑定媒体编辑器 editor.subscribe('editableInput', function (event, currentEditable) { // my code goes here }

我正在使用媒体编辑器

初始化
媒体编辑器
类的代码如下所示

var editor = new MediumEditor(el, {
            placeholder: false,
            toolbar: false
        })
我使用以下方法为我的自定义字段绑定媒体编辑器

editor.subscribe('editableInput', function (event, currentEditable) {
// my code goes here
}
我的问题是,我无法限制媒体编辑器字段的maxLength。我还没有找到任何选项来传递到medium editor类以限制最大字符数


有没有办法限制媒体编辑器中的最大字符数?

目前没有办法限制媒体编辑器字段的长度。github回购协议中有一个讨论如何实现这一点的例子

浏览器不提供contenteditable字段的maxLength属性。问题还在于这些字段包含标记,因此如果要引入maxLength,则需要找到一种方法来忽略所有文本的长度,而不是跟踪/限制“可打印字符”的数量。例如:

<b>Bold and <i>italic</i></b>
粗体和斜体
此文本的完整长度为29个字符(包括标记),但您可能希望将长度计算为15个字符(“粗体和斜体”)

下面是一篇stackoverflow帖子,建议如何限制contenteditable字段中的文本长度,这是Media editor用于所见即所得文本的方式:

乍一看,这篇文章中的解决方案本身是不够的,因为它们要么依赖于jQuery(medium editor仅适用于vanilla JS),要么依赖于元素的
.innerText
属性(其中

实现这一点的另一个困难部分是如何实际执行长度限制。在另一篇stackoverflow文章中调用的解决方案是监听
keyup
keydown
事件,这允许您检测用户何时键入并调用
event.preventDefault()
以防止输入文本。这不包括用户将内容粘贴到编辑器中或执行
document.execCommand()
时的时间(这是浏览器处理内置文本格式的方式)。您可以侦听
粘贴
事件,但如果不允许粘贴发生并随后检查html,您将无法跨浏览器一致地检测粘贴内容

因此,可能必须限制您对编辑器中的更改做出反应,然后删除字符。这会造成闪烁文本的丑陋后果,但这将是在出现用户粘贴或
document.execCommand()
等情况时始终限制长度的唯一方法

input
是检测编辑器任何更改(包括粘贴和
document.execCommand()
)的好方法适用于除IE+Edge之外的所有浏览器,IE+Edge从未支持contenteditable字段上的
input
事件。但是,MediumEditor会公开一个
editableInput
事件,该事件将在所有浏览器上一致模拟该事件(我只是碰巧写了那个标准化,让我告诉你,在IE+Edge中很难伪造输入事件!)