Как я могу отключить возврат каретки в редактируемой TextArea? - PullRequest
0 голосов
/ 02 августа 2011

Я просто хочу, чтобы пользователь не вводил возврат каретки в TextArea.Я экспериментировал со свойством «restrict» в TextArea, но, похоже, не смог его решить.

У меня есть следующий код:

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

    }

Единственная проблема сейчас в том, что если вы удерживаете нажатой клавишу return, он очищает первый возврат каретки, а затем продолжает добавлять, пока вы удерживаете его.Мне нужен способ, чтобы это не происходило без потери внимания на текстовой области.

1 Ответ

2 голосов
/ 02 августа 2011

Нет опыта работы с flex3, но после беглого исследования, основанного на идее использования алгоритма, управляемого событиями, кажется, что вы можете использовать TextEvent s и просто удалить любые переводы строк / переносов во введенномтекст перед передачей на TextArea.

В качестве альтернативы, вы можете взглянуть на KeyboardEvent s .

Тем не менее, кажется, что использование свойства restrict было бы действительно самым простым, поскольку вы можете просто установить его на "^\r", и это исключит возврат каретки и ввод только возврата каретки.(Конечно, я бы рекомендовал использовать "^\r\n" вместо этого, чтобы обеспечить общую защиту новой строки от возврата каретки, перевода строки и любой их комбинации.)

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

...