2

フォーカス (タブまたはクリック) 時にすべてのテキストを選択できるように、TextField でフォーカス イベントを処理しようとしています。ここで何か間違っているようですか?

txtTextField.addEventListener(FocusEvent.FOCUS_IN, handleFocusIn);
function handleFocusIn() {
 //select all text here
}
4

7 に答える 7

7

フォーカスを受け取ったときにテキストフィールドの内容を選択するには、同じことが必要でした。

私は試した:

A) FocusEvent の後に選択するだけです。これは機能していないようです (私の推測では、マウス クリックが処理される前に FocusEvents が発生し、選択が元に戻されます)。

B) マウスをクリックするたびに選択する。これは機能しますが、後でテキストの一部のみを選択したいユーザーにとっては非常に煩わしいものです。

ただし、次の回避策は機能するようです。

    myTextField.addEventListener(MouseEvent.CLICK, selectAllOnce);

    function selectAllOnce(e:MouseEvent) {
        e.target.removeEventListener(MouseEvent.CLICK, selectAllOnce);
        e.target.addEventListener(FocusEvent.FOCUS_OUT, addSelectListener);
        selectAll(e);
    }

    function addSelectListener(e:FocusEvent) {
        e.target.addEventListener(MouseEvent.CLICK, selectAllOnce);
        e.target.removeEventListener(FocusEvent.FOCUS_OUT, addSelectListener);
    }

    function selectAll(e:Event) {
        e.target.setSelection(0, e.target.getLineLength(0));
    }

それが役立つことを願っています。個人的には、Adobe が TextField オブジェクトのオプションを単純に追加した場合が最も論理的だと思います。

于 2010-02-09T16:16:19.347 に答える
4

あなたhandleFocusInの署名が必要です

function handleFocusIn(event:FocusEvent) // or just Event
于 2009-07-10T12:34:45.773 に答える
2

開発のプロトタイプ段階(Flash)で同様の問題が発生しました。テキストフィールドが FocusEvent.FOCUS_OUT イベントをまったく発生させていませんでした。問題は、ステージに Button コンポーネントがあったことです。そのフラッシュ ボタン コンポーネントのインスタンスを、ゼロから作成したカスタム ボタンに置​​き換えるとすぐに、機能するようになりました。このバグと解決策をインターネットで見つけることができませんでした。

ステージ上のボタン コンポーネントを使用すると、最初にクリックしたときにのみ FOCUS_IN イベントが発生します。その後、FOCUS_OUT イベントも FOCUS_IN イベントも発生しません。

これが何らかの形で誰かを助けることを願っています。

于 2009-07-21T11:37:07.800 に答える
2

私はこのようにハンドラーをやっています。魅力のように機能します:

private function onFocusIn(e:FocusEvent):void 
{
    setTimeout(title.setSelection, 100, 0, e.target.text.length);           
}
于 2010-02-25T21:13:11.187 に答える
0

簡単な解決策は次のとおりです。

import flash.events.Event;
import flash.events.MouseEvent;
import flash.events.FocusEvent;

tf.addEventListener(FocusEvent.FOCUS_IN, handleFocusIn);

function handleFocusIn(e:FocusEvent):void
{
    tf.addEventListener(MouseEvent.MOUSE_UP, preventLosingSelection);
    tf.setSelection(0, tf.length);
    stage.focus = tf;
}

function preventLosingSelection(e:MouseEvent):void
{
    tf.removeEventListener(MouseEvent.MOUSE_UP, preventLosingSelection);
    tf.setSelection(0, tf.length);
    stage.focus = tf;
}

これが将来誰かに役立つことを願っています!

于 2013-08-11T14:51:58.670 に答える
0

次のように、ユーザーがテキストの一部だけを選択していないことがわかります。

private function clickHandler(e:MouseEvent){
    if(tfield.selectionBeginIndex == tfield.selectionEndIndex){
        tfield.setSelection(0, tfield.length);
    }
}
于 2013-07-09T17:50:20.890 に答える