复制/粘贴时,flev spark textarea限制最大字符



我进行了搜索,无法找到它。我们有一个带有MaxChars =" 3900"的Spark Textarea。但是,当复制/粘贴到文本区域时,它行不通。我试图将其添加到更改中:

 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添加了相同的内容。但这根本不会触发。

请让我想知道我缺少什么。我需要显示一个警报&每次超过最大限制时,将字符的最大限制到最大。

谢谢

harish

首先,我们需要清除一件事:当触发更换处理程序时,这就是手段:文本正在改变,但更改尚未适用。

如果您的文本中的文本为"(空),现在,我粘贴了1600个字符,调用的处理程序被调用,文本的长度仍然为0,因为它正在变化,而不是更改。

现在,如果您有一个更改处理程序,当您追踪长度时,应该是1600。

但是,如果您使用" event.preventdefault();";在您更改的方法中,无需采取任何行动来更改更换处理程序中的文本,不应触发更改处理程序。

所以,我的建议是:

  1. 使用更换处理程序是正确的。
  2. 在处理程序中,在剪贴板中获取文本,然后您可以在剪贴板中获取文本的长度,并使用此长度 textarea.textare.text.length ,如果您可以获得长度糊处理了。如果总Lenght大于您的limition,则可以防止事件,并做任何您想做的事情。

这是您的一些代码:

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. 
                }
            }
        }

最新更新