【问题标题】:Flex limit number of characters in textareaFlex 限制 textarea 中的字符数
【发布时间】:2016-12-16 18:40:48
【问题描述】:

可能之前有人问过这个问题,但没有得到任何正确的答案。

<s:TextArea fontSize="14" heightInLines="15" widthInChars="40" />

我有文本区域,我想限制(允许)最多 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 个字符。我怎样才能限制特定的行?

【问题讨论】:

  • 不知道为什么人们不赞成这些问题。这么低质量吗?

标签: actionscript-3 apache-flex textarea


【解决方案1】:

这只是为了已经为您实现的自定义逻辑。你必须自己做。

监听文本输入事件

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 个字符加上换行符。

【讨论】:

  • 感谢您的回复。我知道这样我可以获得当前和插入的文本。但是,我怎样才能在插入的行中总共有多少字符?我要进入哪一行。所以,如果超过 15,我可以防止
  • 这在我回答的最后一段中有解释。
  • 你能给我举个例子吗?我无法获得要输入文本的当前行。
猜你喜欢
  • 2012-10-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-12-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-02
相关资源
最近更新 更多