Flex Rich Text Editor - Ограничение количества символов - PullRequest
0 голосов
/ 11 июня 2009

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

Ответы [ 2 ]

2 голосов
/ 11 июня 2009

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

0 голосов
/ 25 июля 2014

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

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

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

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

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

...