flex 动态new组件并平添验证
flex 动态new组件并添加验证
工作需要,自己写测试代码测试下
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="init()"> <mx:Script> <![CDATA[ import mx.events.ValidationResultEvent; import mx.validators.Validator; private var formValidator:FormValidator=new FormValidator(); private function init():void{ formValidator.addValidators(validators); formValidator.failedCallBack=function():void{ submit.enabled=false; }; formValidator.passedCallBack=function():void{ submit.enabled=true; }; } public function test():void{ var btn:Button = new Button(); var text:TextInput = new TextInput(); text.restrict="0-9"; var validate1:Validator = new Validator(); validate1.source=text; validate1.property="text"; validate1.requiredFieldError="该选项不能为空!"; this.panel.addChild(text); var text2:TextInput = new TextInput(); text2.id ="textid"; var validate:Validator = new Validator(); validate.source=text2; // validate.addEventListener(ValidationResultEvent.VALID,handleValid); // validate.addEventListener(ValidationResultEvent.INVALID,handleValid); validate.property="text"; validate.requiredFieldError="该选项不能为空!"; this.panel.addChild(text2); formValidator.addValidator(validate); } // Event listener for the valid and invalid events. private function handleValid(eventObj:ValidationResultEvent):void { if(eventObj.type==ValidationResultEvent.VALID) // Enable Submit button. submit.enabled = true; else submit.enabled = false; } ]]> </mx:Script> <mx:Panel width="400" height="300" id="panel"> <mx:Form> <mx:FormItem label="地址" required="true" > <mx:TextInput id="address" /> </mx:FormItem> <mx:FormItem label="电话" required="true" > <mx:TextInput id="phone" /> </mx:FormItem> <mx:FormItem label="顺序" > <mx:TextInput id="seq" restrict="0-9" maxChars="15"/> </mx:FormItem> </mx:Form> <mx:ControlBar horizontalAlign="center"> <mx:Button id="submit" label="提交" enabled="false"/> <mx:Button id="close" label="关闭" /> <mx:Button label="增加" click="test()"/> </mx:ControlBar> </mx:Panel> <mx:Array id="validators"> <mx:Validator required="true" requiredFieldError="地址不能为空!" source="{address}" property="text" /> <!--<mx:Validator required="true" requiredFieldError="电话不能为空!" source="{phone}" property="text" />--> </mx:Array> <!-- <mx:NumberValidator id="seq_" source="{seq}" property="text" domain="int" minValue="1" integerError="顺序必须是整数!" invalidCharError='输入了非数字字符!' trigger="{submit}" triggerEvent="click"/>--> <mx:Style> .errorTip { fontSize: 12; } </mx:Style> </mx:Application>
1 楼
梦心缘
2011-12-02
这样的做法有一个问题,如果你删除了动态创建的文本框text,可是你的验证是无法通过的,虽然页面上显示已经没有了text这个文本框,可validate1.source=text; 这句还绑定着验证呢?不知博主是怎么解决的?