如何在可编辑的TextArea中禁用回车?

时间:2011-08-02 14:27:06

标签: flex flex3 textarea carriage-return restrict

我只想阻止用户在TextArea中输入回车。我一直在尝试TextArea中的'restrict'属性,但似乎无法解决它。

我有以下代码:

<mx:Canvas id="cvs1" label="Panel 1" width="100%" height="100%" creationComplete"addEvtListnerOnPlaceText()" backgroundColor="#FFFFFF">
    <mx:TextArea id="txtP1T1" x="10" y="176" text="{placeName}" width="210" textAlign="center" color="#DC0000" restrict="this is where I need some help"/>
</mx:Canvas>

我不确定限制属性是否会涵盖这一点,但我们非常感谢任何帮助。

我现在已经成功地完成了一些工作:

    private function addEvtListnerOnPlaceText():void{
        txtP1T1.addEventListener(KeyboardEvent.KEY_DOWN, onKeyEventDown);
        txtP1T1.addEventListener(KeyboardEvent.KEY_UP, onKeyEventUp);
    }

    [Bindable]
    public var tempString:String;
    private function onKeyEventDown(e:KeyboardEvent):void
    {
        var character:String = String.fromCharCode(e.charCode);

        if (e.keyCode == 13)
        {
            tempString = txtP1T1.text;
            KeyboardEvent.KEY_UP;
        }

    }
    private function onKeyEventUp(e:KeyboardEvent):void
    {
        var character:String = String.fromCharCode(e.charCode);

        if (e.keyCode == 13)
        {
            txtP1T1.text = tempString;
        }

    }

现在唯一的问题是,如果你按住退货,它会清除第一个回车,然后只要你按住它就会继续添加。我需要一种方法来阻止这种情况的发生,而不是只关注文本区域。

1 个答案:

答案 0 :(得分:2)

没有使用flex3的经验,但在基于使用事件驱动算法的想法进行粗略调查后,似乎您可以使用TextEvents并在传递到输入文本之前删除输入文本中的任何换行符/回车符TextArea

或者,您可能需要查看KeyboardEvents


但是,似乎使用restrict属性确实最简单,因为您可以将其设置为"^\r",这将排除回车并且仅输入回车。 (当然我建议使用"^\r\n"代替,以提供回车,换行和两者的任意组合的整体换行保护。)

http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/mx/controls/TextArea.html#restrict