Flex富文本编辑器 - 限制字符数

时间:2009-06-11 19:19:13

标签: flex rich-text-editor

有没有办法限制数量 Flex富文本编辑器中的字符数? 我想应该有,因为它是可能的 在textarea。所以,如果我能坚持下去 富人中包含的文本区域 文本编辑器,我能够做到这一点

2 个答案:

答案 0 :(得分:2)

我认为这在actionscript中相当容易,虽然我不确定如何在mxml中做到这一点。似乎RichTextEditor中包含两个孩子,其中一个是TextArea。根据文档(http://livedocs.adobe.com/flex/3/langref/mx/controls/RichTextEditor.html#propertySummary),您可以像这样访问子控件:

myRTE.toolBar2.setStyle("backgroundColor", 0xCC6633);

myRTE是文本编辑器的实例。所以我的猜测会是这样的:

myRTE.textArea.maxChars = 125;

125是您想要限制的字符数。

答案 1 :(得分:0)

我刚碰到这个。

在textArea上设置maxChars将对文本区域提供限制,但这不能代表用户可以键入的字符数。

当用户输入时,会在幕后添加标记,这会大大增加字数。

例如,如果我输入字母' a'进入RichTextEditor,我得到一个字数为142和这个htmlText:

<TEXTFORMAT LEADING="2"><P ALIGN="LEFT"><FONT FACE="Verdana" SIZE="10" COLOR="#0B333C" LETTERSPACING="0" KERNING="0">a</FONT></P></TEXTFORMAT>

我无法看到一种直接的方法来获得正确的maxChar开箱即用,所以我扩展了RichTextEditor并给它一个maxChar。如果maxChar&gt; 0,我添加了一个聆听者来改变&#34;并在事件处理程序中做了类似的事情:

    protected function handleTextChange(event:Event) : void
    {
        var htmlCount:int = htmlText.length;

        // if we're within limits, ensure we reset
        if (htmlCount < maxChars)
        {
            textArea.maxChars = 0;
            this.errorString = null;
        }
        // otherwise, produce an error string and set the component so the user
        // can't keep typing.
        else
        {
            var textCount:int = textArea.text.length;
            textArea.maxChars = textCount;

            var msg:String = "Maximum character count exceeded. " +
                "You are using " + htmlCount + " of " + maxChars + " characters.";

            this.errorString = msg;
        }
    }

这个想法是只在处于错误状态时才将maxChars应用于文本区域,因此用户不能输入任何其他内容,并且会提示删除一些字符。一旦我们离开错误状态,我们需要将textArea.maxChars设置为零,以便它们可以继续。