以下代码的工作方式如下:
当我在 txtother.textbox 中输入错误值并将其聚焦时,警报将显示为“请输入有效的格式掩码。”。 按下Alertbox中的“ ok ”按钮后,再次触发 txtOther.focusout 。 即,在按下确定警告后立即再次显示相同的 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
应该是焦点,警报不应该像以前那样反复出现。
答案 0 :(得分:1)
这是因为你第二次在ok按钮上有focusIn="txtOther_Validate();"
。只需删除focusIn处理程序就可以了。
答案 1 :(得分:0)
修改强>
stage.focus = txtOther;
这将在as3中起作用...我不知道flex。
答案 2 :(得分:0)
我可能有错,但我认为警报框不会等到你关闭它。因此,您触发验证并立即将焦点设置回输入。现在,您单击警告框的“确定”按钮,这将使输入失去焦点,从而触发验证,这将提升警报......等等。