Focus In/out Проблема - кнопка не сфокусирована

Когда я нажимаю кнопку *OK в окне предупреждения, я хочу, чтобы txtOther.textbox был в фокусе. Здесь текстовое поле сфокусировано, когда отображается окно предупреждения, и когда я нажимаю кнопку ОК в текстовом поле, 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 не устанавливается. Итак, здесь я хочу вызвать событие фокуса после нажатия кнопки «ОК» в окне предупреждения, а не раньше. Как это сделать...


person Dinesh Kumar    schedule 10.08.2011    source источник
comment
На каком фокусе TextInput вы выполняете проверку? Как вы создаете свой ящик предупреждений? Пожалуйста, покажите какой-нибудь код.   -  person JeffryHouser    schedule 10.08.2011
comment
Почему вы хотите удалить вопрос? Вот инструкции: meta.stackexchange.com/questions/25088/ Если вы предпочитаете редактировать свой вопрос, . посмотрите здесь: meta. stackexchange.com/questions/73754/   -  person JeffryHouser    schedule 10.08.2011
comment
stackoverflow.com/questions/7006140/ На самом деле это копия приведенной выше ссылки, но здесь я упростил свое требование. Так что, пожалуйста, не игнорируйте мой вопрос   -  person Dinesh Kumar    schedule 11.08.2011
comment
здесь даже если отображается окно предупреждения, фокус txtother.textbox также установлен.. но после нажатия кнопки ok в предупреждении фокус поля TxtOther.text не установлен.. так что здесь я не могу вызвать фокус событие после нажатия кнопки ok в окне оповещения.. как это сделать...   -  person Dinesh Kumar    schedule 11.08.2011
comment
Хорошо, если это тот же вопрос, за который я проголосовал, как точный дубликат.   -  person JeffryHouser    schedule 11.08.2011


Ответы (2)


Когда вы вызываете 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();
}
person Mark Lapasa    schedule 11.08.2011

Вместо обычного оповещения я поставил оповещение следующим образом

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

а затем я обрабатываю событие оповещения с помощью

private function alrt_close(evt:CloseEvent):void {
    txtOther.setFocus(); 

Это хорошо сработало для меня.

person Dinesh Kumar    schedule 19.08.2011