Flex 限制 textarea 中的字符数

Posted

技术标签:

【中文标题】Flex 限制 textarea 中的字符数【英文标题】:Flex limit number of characters in 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 个字符。我怎样才能限制特定的行?

【问题讨论】:

不知道为什么人们不赞成这些问题。这么低质量吗? 【参考方案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,我可以防止 这在我回答的最后一段中有解释。 你能给我举个例子吗?我无法获得要输入文本的当前行。 看看这个问题:***.com/q/12627185/4347580

以上是关于Flex 限制 textarea 中的字符数的主要内容,如果未能解决你的问题,请参考以下文章

将文本长度限制为 flex 3 中的 mx textarea 可用大小

TextArea htmlText 设置时不更新文本属性(Flex)

Flex TextArea - 从 Word 复制/粘贴 - xml 解析中的 unicode 字符无效

不允许在 Flex 中编辑 textarea 中的特定区域

html 限制textarea中的总行数和文本长度

具有字符限制的居中 css textarea