2009-06-11 4 views
0

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

ответ

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, являющимся числом символов, к которым вы хотели бы ограничить.

+0

В mxml это будет adamcodes

0

Я просто столкнулся с этим.

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

Смежные вопросы