1

当我按下警报框的*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 的焦点。但是在按下警报的 OK 按钮后,没有设置 TxtOther.text 框的焦点。所以在这里我想在按下警报窗口的确定按钮之后而不是之前触发焦点事件。怎么做...

4

2 回答 2

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();
}
于 2011-08-11T22:53:40.353 回答
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(); 

这对我来说效果很好。

于 2011-08-19T04:47:11.690 回答