Оповещение срабатывает несколько раз - PullRequest
0 голосов
/ 10 августа 2011

Следующий код работает следующим образом:

Если я введу неправильные значения в txtother.textbox и выделю его, предупреждение будет отображаться как « Пожалуйста, введите действительную маску формата». После нажатия кнопки " ok " в окне оповещений снова запускается txtOther.focusout . то есть сразу после нажатия OK оповещения, тот же ALERT отображается снова.

Я добавил код для вашей ссылки:

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

<mx:Canvas width="100%" height="5%" horizontalScrollPolicy="off" verticalScrollPolicy="off">
<mx:HBox width="80%" height="100%" horizontalAlign="left">
<mx:Button width="64" label="Save" id="btnSave" click="btnSave_Click();" focusIn="txtOther_Validate();"/>
</mx:HBox>
</mx:Canvas>


//Validating action script is as follows:
public function txtOther_Validate():void{
    var formatMask: String = null;  
        if(txtOther.editable && txtOther.enabled){
            if(txtOther.text != ""){
                formatMask = txtOther.text;
                if(conditions to validate){
                    //some expression
                }               
                if(formatMask.length < 12){
                    Alert.show("Please enter format mask with minimum 12 digits.");
                    txtOther.setFocus();
                    return;
                }               VariableEditControl.getInstance().validateFormatMask(txtOther.text,validateFormatMask_Result,validateFormatMask_Fault, validateFormatMask_Error);
            }
        }   
}
public function validateFormatMask_Result(event:PLEvent): void {
    var result:String = event.getData().toString(); // here lets assume that the result variable is stored as "FAILURE"
    if(result == "FAILURE"){
        Alert.show("Please enter a valid Format Mask.");
        txtOther.setFocus(); //
    }
}

Я не хочу, чтобы оповещение приходило снова и снова .. Мне это нужно так, чтобы при нажатии кнопки ok оповещения. txtother.text должен быть в фокусе, и предупреждение не должно приходить снова и снова, как раньше.

Ответы [ 3 ]

1 голос
/ 10 августа 2011

это потому, что у вас есть focusIn="txtOther_Validate();" на кнопку ОК во второй раз. просто удалите обработчик focusIn, и все будет в порядке.

0 голосов
/ 10 августа 2011

Возможно, я ошибаюсь, но думаю, что окно предупреждения не будет ждать, пока вы его не закроете.Таким образом, вы запускаете свою проверку и сразу же возвращаете фокус на вход.Теперь вы нажимаете кнопку ОК в окне оповещения, в результате чего ввод теряет фокус, вызывая проверку, которая вызовет оповещение, которое ... и т. Д.

0 голосов
/ 10 августа 2011

РЕДАКТИРОВАТЬ:

stage.focus = txtOther;

Это будет работать в as3 ... Я не знаю о flex.

...