Flex Rich Text Editor で文字数を制限する方法はありますか? テキストエリアで可能であるため、あるはずです。ということで、リッチテキストエディタに含まれるテキストエリアを手に入れることができれば、できるようになるのですが
2 に答える
これは actionscript ではかなり簡単だと思いますが、mxml でどのように行うかは正確にはわかりません。には 2 つの子が含まれているようです。RichTextEditor
そのうちの 1 つはTextArea
です。ドキュメント ( http://livedocs.adobe.com/flex/3/langref/mx/controls/RichTextEditor.html#propertySummary ) によると、次のようにサブコントロールにアクセスできます。
myRTE.toolBar2.setStyle("backgroundColor", 0xCC6633);
myRTE はテキスト エディターのインスタンスです。したがって、私の推測では、次のようになります。
myRTE.textArea.maxChars = 125;
制限したい文字数は 125 です。
私はちょうどこれに遭遇しました。
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 > 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 をゼロに設定する必要があります。