我进行了搜索但无法找到它。我们有一个Spark TextArea,maxChars =“3900”。但是在复制/粘贴到文本区域时它不起作用。我试着将它添加到changingHandler:
if (ta.text.length > 3900)
{
Alert.show("The maximum characters length is 3900. Please limit the characters to the max limit");
ta.text = ta.text.substr(0, 3900);
} else
{
if (event.operation is PasteOperation)
{
....//Other logic
}
}
问题是它不能一直工作。当警报超过3900个字符时,警报仅显示一些时间。不知道为什么。我也将相同的内容添加到changeHandler中。但这根本不会被触发。
请告诉我缺少的东西。我需要显示一个警报&每次超过最大限制时,将字符调整到最大值。
由于
哈里什
答案 0 :(得分:2)
首先,我们需要澄清一件事:当触发更改处理程序时,这意味着:文本正在更改,但更改尚未应用。
如果textare中的文本是“”(空),现在,我粘贴1600个字符,调用更改处理程序,文本的长度仍为0,因为它正在改变,而不是更改。
现在,如果你有一个改变处理程序,当你追踪长度时,它应该是1600。
但是,如果你使用“event.preventDefault();”在更改方法中,并且不更改更改处理程序中的文本时,不应触发更改处理程序。
所以,我的建议是:
这里有一些代码:
protected function textArea_changingHandler(event:TextOperationEvent):void
{
trace(event.type + " - " + textArea.text.length); // this length is befor the paste
if(event.operation is PasteOperation) {
// Text in the clipboard.
var textPaste:String = Clipboard.generalClipboard.getData(ClipboardFormats.TEXT_FORMAT) == null ? "" : Clipboard.generalClipboard.getData(ClipboardFormats.TEXT_FORMAT) as String;
// this length is after the paste(if the paste will complete)
var totalLength:int = textArea.text.length + textPaste.length;
trace("String length after Paste: " + totalLength);
if(totalLength > 3900) {
event.preventDefault();
textArea.text += "[Paste:" + textPaste.substr(0, 2) + "]"; // process your text here.
}
}
}