可能这个问题以前问过,但是没有得到任何正确的答案。
<s:TextArea fontSize="14" heightInLines="15" widthInChars="40" />
我有textarea,我想限制(允许)最大15行用户可以输入不超过这个。
我试图找出任何可用的属性或尝试做编程,但是,没有得到我不会。
在文本更改时试图找出行数,但是没有成功。
var textLength:Number = event.currentTarget.text.length; //It gives length of text.
我还想限制单行最多40个字符。然后在用户输入任何文本后,转到下面一行。
这可能吗?
如有任何帮助,不胜感激。
编辑:我像下面这样限制行数:
protected function onKeyDown(event:KeyboardEvent):void
{
if(txtArea.textFlow.flowComposer.numLines > txtArea.heightInLines && event.keyCode == Keyboard.ENTER)
{
txtArea.text = txtArea.text.substr(0, txtArea.selectionActivePosition-1) + txtArea.text.substr(txtArea.selectionActivePosition, txtArea.text.length);
}
}
但是,仍然不能限制每行40个字符。我如何给出特定线路的限制?
这只是为了自定义已经为您实现的逻辑。你必须自己做。
监听文本输入事件
input.addEventListener(TextEvent.TEXT_INPUT, onInput);
在该处理程序中,防止默认行为并执行所需的逻辑以将text
属性设置为您想要的结果。
private function onInput(e:TextEvent):void
{
e.preventDefault();
trace("current text: " + e.target.text);
trace("inserted text: " + e.text);
// perform logic here
e.target.text = "result";
}
在您的示例中,最方便的逻辑可能是使用匹配最多40组(最多15个字符)加上换行符的regex模式。