Flex中利用Validator类验证表单项目合法性的例子
By Minidxer | July 21, 2008
接下来的例子演示了Flex中如何利用Validator类验证表单项目合法性。分别使用了StringValidator, NumberValidator, ZipCodeValidator和Validator类。
让我们先来看一下Demo(可以右键View Source或点击这里察看源代码):
下面是完整代码(或点击这里察看):
Download: main.mxml
- <?xml version="1.0" encoding="utf-8"?>
- <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>
代码:Peter deHaan 翻译/整理/编译:minidxer
Topics:
Flex |
Tags: StringValidator, ValidationResultEvent, Validator.validateAll, ZipCodeValidator
Trackbacks