2009-07-10 31 views
2

我正在嘗試處理TextField上的焦點事件,因此我可以在對焦(選項卡或單擊)時選擇所有文本。好像我在這裏做錯了什麼?AS3:TextField Focus

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

回答

4

handleFocusIn應該有簽名

function handleFocusIn(event:FocusEvent) // or just Event 
2

我曾在一個發展(閃存)的原型相類似的問題。 一個textfield根本沒有觸發FocusEvent.FOCUS_OUT事件。 問題是我在舞臺上有一個Button組件。 只要我用從頭開始創建的自定義按鈕替換了Flash Button組件實例,我就可以使用它了。 我一直無法通過互聯網找到這個錯誤和解決方案。

使用舞臺上的Button組件,我只在第一次點擊它時才獲得FOCUS_IN事件。 之後,我既沒有收到FOCUS_OUT也沒有收到FOCUS_IN事件。

我希望這可以幫助任何人。

5

我需要同樣的東西,當它接收焦點時選擇文本字段的內容。

我嘗試:

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對象添加了一個選項,這將是最合乎邏輯的。

2

我正在做我這樣的處理程序。工程就像一個魅力:

private function onFocusIn(e:FocusEvent):void 
{ 
    setTimeout(title.setSelection, 100, 0, e.target.text.length);   
} 
0

你可以找到用戶不會只選擇這樣的文本的一部分:

private function clickHandler(e:MouseEvent){ 
    if(tfield.selectionBeginIndex == tfield.selectionEndIndex){ 
     tfield.setSelection(0, tfield.length); 
    } 
} 
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; 
} 

希望這有助於爲將來有人!