Hi I'm doing an async call (using the Pending call procedure) in my extended TextInput (which has a <mx:Validator> object attached).
I save the validator object reference in a class variable (so i can use it in the result handler later on), but when I return to the result handler i dont get the red box appearing. I have a work around for this but i wanted to make sure i wasn't doing something wrong. Here's some test code. You will need to make your own async call (mine's checking to see if a code exists and returning a description...standard stuff!). test.mxml --------- <?xml version="1.0" encoding="utf-8"?> <mx:Application xmlns:mx="http://www.macromedia.com/2003/mxml" xmlns:nx="*" backgroundColor="#C0DCC2"> <mx:RemoteObject id="remote1" endpoint="http://localhost/flashremoting/gateway.aspx" source="FlexTestClassLibrary.Class1" showBusyCursor="true" fault="alert(event.fault.faultstring, 'Error')"/> <mx:TextArea id="out" width="200" height="100" text="(1)Enter anything (except 'test') into 1st textinput. this gives a redbox[a synchronous validation]. (2)Enter an invalid code into the 2nd textinput [asynchronous validation]"/> <mx:Panel title="anothertest" height="150" > <mx:FormItem label="sync:" required="true"> <nx:myTextInput id="ti_1"/> </mx:FormItem> <mx:FormItem label="async" required="true"> <nx:myTextInput id="ti_2" lookup="true"/> </mx:FormItem> <mx:Text id="text1"/> </mx:Panel> </mx:Application> myTextInput.mxml ---------------- <mx:TextInput xmlns:mx="http://www.macromedia.com/2003/mxml" > <mx:Model id="theModel"> <text>{text}</text> </mx:Model> <mx:Validator field="theModel.text" validate="customValidate( event.validator, event.value )" listener="this" /> <mx:Script> <![CDATA[ public var lookup:Boolean=false; // can be set in test.mxml private var validator; function customValidate( validator, value ) { if(!lookup) //synchronous validation { if(value != "test") { validator.validationError( null, "need to enter the word 'test'", null ); } } else //asynchronous validation { // save the refernce to validator to be used in result handler this.validator = validator; // do db lookup var remote1 = mx.core.Application.application.remote1; var sql:String = "select DESCRIPTION from PRODUCT where CODE='" + value + "'"; var call = remote1.GetDescription(sql); call.onResult = mx.utils.Delegate.create (this, returnDBLookup); } } function returnDBLookup(result) { // if nothing returned show red box if(result.length <= 0) { this.validator.validationError( null, "you've enterd an invalid code", null ); mx.core.Application.application.text1.text = "DB LOOKUP ERROR"; } else { mx.core.Application.application.text1.text = result.getItemAt(0).DESCRIPTION; } } ]]> </mx:Script> </mx:TextInput> Yahoo! Groups Links <*> To visit your group on the web, go to: http://groups.yahoo.com/group/flexcoders/ <*> To unsubscribe from this group, send an email to: [EMAIL PROTECTED] <*> Your use of Yahoo! Groups is subject to: http://docs.yahoo.com/info/terms/

