7

我想使用 KendoUI 编辑器基本上只允许用户将文本格式化为段落。可能允许粗体和下划线。

我正在努力解决两件事:

  1. 我想在粘贴时从文本中删除所有 html 格式
  2. 我想禁用粗体、下划线等的键盘快捷键——即使工具栏元素不存在,它们似乎也能工作。

谢谢!

4

4 回答 4

9

为了粘贴唯一的文本,您可以定义一个粘贴处理程序来删除除文本之外的所有内容。这很简单:

$("#editor").kendoEditor({
    paste: function (ev) {
        ev.html = $(ev.html).text();
    }
});

paste处理程序接收作为参数的事件,该事件包含在正在html解析的文本中。我们可以使用 jQuery 来获取仅使用的文本$(ev.html).text()

对于删除快捷方式,据我所知,如果您只定义了您想要的工具,那么只有那些快捷方式是活动的。所以如果你说这样的话:

$("#editor").kendoEditor({
    tools: [
        "italic"
    ],
    paste: function (ev) {
        ev.html = $(ev.html).text();
    }
});

只有italic快捷方式<ctrl>+i可用。如果您将tools数组留空,则您没有任何数组。

于 2013-03-24T23:37:56.443 回答
2

现在可以通过pasteCleanup选项轻松实现这一点。

见这里:http ://docs.telerik.com/kendo-ui/controls/editors/editor/pasting

于 2016-09-08T13:54:50.870 回答
0

对我来说,这是完整的解决方案

                pasteCleanup: {
                custom: function (html)
                {
                    html = html.replace(/<\s*br\/*>/gi, '');
                    html = html.replace(/<\s*a.*href="(.*?)".*>(.*?)<\/a>/gi, " $2 (Link - $1) ");
                    html = html.replace(/<\s*\/*.+?>/ig, '');
                    html = html.replace(/ {2,}/gi, '');
                    html = html.replace(/\n+\s*/gi, '');
                    html = html.replace("&nbsp;", '');
                    html = html.replace(/&lt;.*?&gt;/g, '');
                    return html;
                }
            }
于 2021-06-20T02:47:08.907 回答
0

Kendo MVC 也为此目的进行了扩展。使用示例:

.PasteCleanup(x => x.KeepNewLines(false))

false在这种情况下意味着您要清除除新行之外的所有内容。

于 2019-09-30T13:50:37.727 回答