聚焦输入/输出问题Flex Bug

时间:2011-08-10 13:16:32

标签: flash flex actionscript alertdialog setfocus

当我按下提醒框的 * ok 按钮时,我希望 txtOther.textbox 成为焦点。 这里txtbox在显示警告框时被聚焦,如果按下文本框的ok按钮, txtOther.textbox 不在焦点上。 请帮帮我......

MXML SCRIPT:

<mx:Canvas id ="parentCanvas1" label="General" >
<mx:VBox id="parentBox1">
<mx:Canvas id="cvsGeneral"> 
<mx:TextInput id="txtOther" focusOut="txtOther_Validate();"/>
</mx:Canvas>
</mx:VBox>                              
</mx:Canvas>

<mx:Canvas id="parentCanvas2" >
<mx:HBox id="parentBox2" >
<mx:Button label="Save" id="btnSave" click="txtOther_Validate();" />
</mx:HBox>
</mx:Canvas>

////////////Action script////////////////////
public function txtOther_Validate(): void {     
     // here lets assume that the result variable is stored as "FAILURE"     
    if(result == "FAILURE"){  
        Alert.show("Please enter a valid Format Mask.");        
         txtOther.setFocus(); //   
         } 
}

这里即使显示警告框,也会设置txtother.textbox的焦点..但是在按下警告的确定按钮后,未设置TxtOther.text框的焦点..所以这里我想要按下警告窗口的“确定”按钮后触发焦点事件,而不是之前......怎么做......

请帮助我。 提前谢谢..

2 个答案:

答案 0 :(得分:1)

调用Alert.show()时,将返回的Alert实例存储在变量中。在该变量上,设置一个将侦听自定义事件的事件侦听器。该事件的处理程序的目的是将焦点设置为txtOther

以下是一些代码段:

private var alert:Alert = Alert.show(blah);

alert.addEventListener(mx.events.FlexEvent.REMOVE, removeHandler, false, 0, true);

private function removeHandler(event:FlexEvent):void
{
    txtOther.setFocus();
}

答案 1 :(得分:0)

而不是正常的警报,我把这个警告放在这个

Alert.show("Please enter a valid Format Mask.", "Validation Error", Alert.OK, this, alrt_close);

然后我通过

处理警报事件
private function alrt_close(evt:CloseEvent):void {
    txtOther.setFocus(); 

这对我有用。