如何在不丢失 Flex 格式的情况下替换富文本编辑器文本

Posted

技术标签:

【中文标题】如何在不丢失 Flex 格式的情况下替换富文本编辑器文本【英文标题】:How to replace RichTextEditor text without loosing the formatting in Flex 【发布时间】:2017-09-30 15:09:45 【问题描述】:

在我的 ActionScript 代码中,我使用 RichTextEditor 执行以下操作。

protected function createEmailTemplateContent(subRecord:String = null):void
var index:int = emailTemplateContent.selection.beginIndex;
if(subRecord != null)
    emailTemplateContent.text = emailTemplateContent.text.substring(0,index) + '[' + fieldTypeDD.selectedItem + '].[' + insertFieldDD.selectedItem.toString().substring(0,insertFieldDD.selectedItem.toString().indexOf('(+)')-1) +  '].[' + subRecord + ']' + emailTemplateContent.text.substring(index,emailTemplateContent.text.length);
else
    emailTemplateContent.text = emailTemplateContent.text.substring(0,index) + '[' + fieldTypeDD.selectedItem + '].[' + insertFieldDD.selectedItem + ']' + emailTemplateContent.text.substring(index,emailTemplateContent.text.length);


上述方法在用户从下拉列表中选择一个项目时实现。然后该特定项目将填充到富文本编辑器的文本区域内。

我的问题是,如果用户已经对文本进行了一些格式化(使用 RichTextEditor 中的格式化选项),那么当用户选择一个项目并填充文本区域时,这些也会被替换。

在此,'emailTemplateContent' 表示 RichTextEditor。我在下面包含了我的 RichTextEditor 代码。

<component:RichTextEditorWithAllControls id="emailTemplateContent" dropShadowVisible="false" creationComplete="emailTemplatesContentInit()" headerHeight="0"   htmlText="@emailTemplateObject.emailContent" showControlBar="false" verticalScrollPolicy="auto"/>

我假设发生这种情况是因为当我在richTextEditor 中填充“文本”值时,“htmlText”值也会被替换。

有谁知道解决这个问题的方法。

提前致谢。

【问题讨论】:

您能否添加显示格式化文本的屏幕截图以及从下拉列表中选择项目后会发生什么? 【参考方案1】:

首先将连接的文本存储在一个String中,然后在html文本中替换它。像下面这样的

protected function createEmailTemplateContent(subRecord:String = null):void
  var index:int = emailTemplateContent.selection.beginIndex;
  var newText:String;
  if(subRecord != null)
    newText = emailTemplateContent.text.substring(0,index) 
    + '[' + fieldTypeDD.selectedItem + '].[' + insertFieldDD.selectedItem.toString().substring(0,insertFieldDD.selectedItem.toString().indexOf('(+)')-1) +  '].[' + subRecord + ']' + emailTemplateContent.text.substring(index,emailTemplateContent.text.length);
  else
    newText = emailTemplateContent.text.substring(0,index) + '[' + fieldTypeDD.selectedItem + '].[' + insertFieldDD.selectedItem + ']' + emailTemplateContent.text.substring(index,emailTemplateContent.text.length);
  
  emailTemplateContent.htmlText = emailTemplateContent.htmlText.replace(emailTemplateContent.text, newText);

【讨论】:

以上是关于如何在不丢失 Flex 格式的情况下替换富文本编辑器文本的主要内容,如果未能解决你的问题,请参考以下文章

如何在不丢失格式的情况下更改 Word.Range 文本

CSS Flex Box:如何在不丢失弹性项目高度的情况下将“弹性项目”垂直对齐到中间?

如何在不丢失现有值的情况下编辑复选框

富文本粘贴文本去除默认格式

如何在不丢失setfocus的情况下将光标设置到文本框的末尾?

JavaScript在粘贴事件上获取剪贴板数据(跨浏览器)