CQ5 richtext'ENTER'键事件在每一行都插入<p>标记

时间:2015-12-11 15:27:40

标签: extjs cq5

要将“ENTER”键事件行为覆盖为 NOT 以为每行文本添加<p></p>标记,KeyPlugin.js中的代码必须在以下块

// handle ENTER key this.mustEnsureBlocks = false; if (e.isEnter() && !cancelKey) {

keyPlugin.js位于/libs/cq/ui/rte/core/plugins/KeyPlugin.js。

有没有人告诉我,如何覆盖/覆盖代码块。

谢谢你, 斯

1 个答案:

答案 0 :(得分:0)

您需要将文件从/libs/cq/ui/rte/core/plugins/KeyPlugin.js复制到/apps/cq/ui/rte/core/plugins/KeyPlugin.js并覆盖必要的代码块(负责插入段落)

或者您可以向您的组件添加侦听器,这将删除<p></p>标签:

JavaScript方式

编写以下函数:

function removeUnecessartyTagsFromMyComponent(field) {
    var value = field.getValue();
    var pOpend = /<p[^>]*>/g;
    var pClosed = /<\/p>/g;
    var correctValue = value.replace(pOpend, "").replace(pClosed, "");
    if (value != correctValue) {
        field.setValue(correctValue);
    }
}

在你的对话框中使用它:

<photoBy
    jcr:primaryType="cq:Widget"
    name="./myComponent"
    title="My Copmonent"
    fieldLabel="Enter text"
    xtype="richtext">
    <listeners
        jcr:primaryType="nt:unstructured" 
              valid="function(field)removeUnecessartyTagsFromMyComponent(field);}"/>
</photoBy>

请注意 - 您可以使用其他听众代替有效,请参阅CQ Widget API doc