Flex Rich Text Editor — ограничение количества символов

Есть ли способ ограничить количество символов в редакторе Flex Rich Text Editor? Я думаю, должно быть, так как это возможно в текстовом поле. Итак, если бы я мог получить текстовую область, содержащуюся в редакторе форматированного текста, я бы смог это сделать.


person simplfuzz    schedule 11.06.2009    source источник


Ответы (2)


Я думаю, что это было бы довольно легко в сценарии действий, хотя я не совсем уверен, как это сделать в 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 — это число символов, которым вы хотели бы ограничиться.

person bkildow    schedule 11.06.2009
comment
В mxml это будет просто ‹mx:RichTextEditor id=rte1›‹mx:TextArea maxChars=125 /›‹/mx:RichTextEditor› - person adamcodes; 03.03.2010

я только что столкнулся с этим.

установка вашего maxChars в textArea обеспечит ограничение текстовой области, но это не будет представлять количество символов, которое может ввести пользователь.

когда пользователь печатает, разметка добавляется за кулисами, и это значительно увеличивает количество символов.

например, если я наберу букву «а» в 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 > 0, я добавляю прослушиватель для «изменения» и делаю что-то вроде этого в обработчике событий:

    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 равным нулю, чтобы они могли продолжить.

person zim    schedule 25.07.2014