Есть ли способ ограничить количество символов в редакторе Flex Rich Text Editor? Я думаю, должно быть, так как это возможно в текстовом поле. Итак, если бы я мог получить текстовую область, содержащуюся в редакторе форматированного текста, я бы смог это сделать.
Flex Rich Text Editor — ограничение количества символов
Ответы (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 — это число символов, которым вы хотели бы ограничиться.
я только что столкнулся с этим.
установка вашего 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 равным нулю, чтобы они могли продолжить.