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]ボックスのフォーカスが設定されていません。そこで、ここでは、アラートウィンドウの[OK]ボタンを押した後ではなく、フォーカスイベントをトリガーしたいと思います。どうやってするか...

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 に答える