Flex:利用Validator类验证表单项目合法性

下面的例子演示了Flex中如何利用Validator类验证表单项目合法性。分别使用了StringValidator, NumberValidator, ZipCodeValidator和Validator类。

可以右键View Source察看源代码:

 http://blog.minidx.com/ext02/validating-flex-forms-using-the-validator-classes/main.html

下面是是源代码:

 

<?xml version="1.0" encoding="utf-8"?> <!-- http://www.slsay.com --> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical" verticalAlign="middle" backgroundColor="white" creationComplete="init()"> <mx:Script> <!--[CDATA[ import mx.validators.Validator; import mx.events.ValidationResultEvent; import mx.validators.ZipCodeValidatorDomainType; import mx.controls.Alert; [Bindable] private var validatorArr:Array; private function init():void { validatorArr = new Array(); validatorArr.push(shippingName_stringValidator); validatorArr.push(shippingAddress1_stringValidator); validatorArr.push(shippingCity_stringValidator); validatorArr.push(shippingState_numberValidator); validatorArr.push(shippingZipCode_zipCodeValidator); validatorArr.push(shippingZipCode_stringValidator); } private function validateForm(evt:MouseEvent):void { var validatorErrorArray:Array = Validator.validateAll(validatorArr);; var isValidForm:Boolean = validatorErrorArray.length == 0; if (isValidForm) { Alert.show("The form is valid!", "Valid form..."); } else { var err:ValidationResultEvent; var errorMessageArray:Array = []; for each (err in validatorErrorArray) { var errField:String = FormItem(err.currentTarget.source.parent).label errorMessageArray.push(errField + ": " + err.message); } Alert.show(errorMessageArray.join("/n/n"), "Invalid form...", Alert.OK); } } private function resetForm(evt:MouseEvent):void { shippingName.text = ""; shippingAddress1.text = ""; shippingAddress2.text = ""; shippingCity.text = ""; shippingState.selectedIndex = -1; shippingZipCode.text = ""; } ]]--> </mx:Script> <mx:XMLList id="statesXMLList"> <state label="California" data="CA" /> <state label="Oregon" data="OR" /> </mx:XMLList> <mx:StringValidator id="shippingName_stringValidator" source="{shippingName}" property="text" minLength="2" /> <mx:StringValidator id="shippingAddress1_stringValidator" source="{shippingAddress1}" property="text" minLength="2" /> <mx:StringValidator id="shippingCity_stringValidator" source="{shippingCity}" property="text" minLength="2" /> <mx:NumberValidator id="shippingState_numberValidator" source="{shippingState}" lowerThanMinError="This field is required." property="selectedIndex" minValue="0" /> <mx:ZipCodeValidator id="shippingZipCode_zipCodeValidator" source="{shippingZipCode}" property="text" requiredFieldError="Please enter a zip code in ZIP+4 format." domain="{ZipCodeValidatorDomainType.US_ONLY}" /> <mx:StringValidator id="shippingZipCode_stringValidator" source="{shippingZipCode}" property="text" tooShortError="Please enter a zip code in ZIP+4 format." minLength="10" maxLength="10" /> <mx:Form> <mx:FormHeading label="Shipping Information" /> <mx:FormItem required="true" label="Name"> <mx:TextInput id="shippingName" maxChars="96" /> </mx:FormItem> <mx:FormItem required="true" label="Address"> <mx:TextInput id="shippingAddress1" maxChars="128" /> </mx:FormItem> <mx:FormItem label=""> <mx:TextInput id="shippingAddress2" maxChars="128" /> </mx:FormItem> <mx:FormItem required="true" label="City"> <mx:TextInput id="shippingCity" maxChars="128" /> </mx:FormItem> <mx:FormItem required="true" label="State"> <mx:ComboBox id="shippingState" prompt="Please select a State..." selectedIndex="-1" dataProvider="{statesXMLList}" labelField="@label" /> </mx:FormItem> <mx:FormItem required="true" label="ZIP Code"> <mx:TextInput id="shippingZipCode" maxChars="10" restrict="0-9 -" /> </mx:FormItem> <mx:FormItem> <mx:HBox> <mx:Button label="Submit" click="validateForm(event)" /> <mx:Button label="Reset" click="resetForm(event)" /> </mx:HBox> </mx:FormItem> </mx:Form> </mx:Application>

你可能感兴趣的:(Flex:利用Validator类验证表单项目合法性)