Un peq ejemplo:
<code>
<?xml version="1.0" encoding="utf-8"?>
<!--
http://blog.flexexamples.com/2007/08/13/validating-flex-forms-using-the-validator-classes/ -->
<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>
</code>