Validating email addresses using the EmailValidator class in Flex
The following example shows you how you can validate email addresses in a Flex application using the EmailValidator class and the validate() and static EmailValidator.validateEmail() methods.
Full code after the jump.
<?xml version="1.0" encoding="utf-8"?>
<!-- http://blog.flexexamples.com/2008/08/29/validating-email-addresses-using-the-emailvalidator-class-in-flex/ -->
<mx:Application name="EmailValidator_validate_test"
xmlns:mx="http://www.adobe.com/2006/mxml"
layout="vertical"
verticalAlign="middle"
backgroundColor="white">
<mx:Script>
<![CDATA[
import mx.controls.Alert;
import mx.events.ValidationResultEvent;
private function emailValidator_valid(evt:ValidationResultEvent):void {
textInput.errorString = "";
message.text = "";
Alert.show(textInput.text, "You entered a valid email address:");
}
private function emailValidator_invalid(evt:ValidationResultEvent):void {
textInput.errorString = evt.message;
message.text = evt.message;
}
private function btn_click(evt:MouseEvent):void {
emailValidator.validate(textInput.text);
}
]]>
</mx:Script>
<mx:EmailValidator id="emailValidator"
valid="emailValidator_valid(event);"
invalid="emailValidator_invalid(event);" />
<mx:Form defaultButton="{btn}">
<mx:FormItem label="email address:"
direction="horizontal">
<mx:TextInput id="textInput"
focusAlpha="0.5" />
<mx:Button id="btn"
label="validate"
click="btn_click(event);" />
</mx:FormItem>
</mx:Form>
<mx:Label id="message" />
</mx:Application>
View source is enabled in the following example.
The following example shows how you can create an EmailValidator object using ActionScript:
<?xml version="1.0" encoding="utf-8"?>
<!-- http://blog.flexexamples.com/2008/08/29/validating-email-addresses-using-the-emailvalidator-class-in-flex/ -->
<mx:Application name="EmailValidator_validate_test"
xmlns:mx="http://www.adobe.com/2006/mxml"
layout="vertical"
verticalAlign="middle"
backgroundColor="white"
creationComplete="init();">
<mx:Script>
<![CDATA[
import mx.validators.EmailValidator;
import mx.controls.Alert;
import mx.events.ValidationResultEvent;
private var emailValidator:EmailValidator;
private function init():void {
emailValidator = new EmailValidator();
emailValidator.addEventListener(ValidationResultEvent.VALID, emailValidator_valid);
emailValidator.addEventListener(ValidationResultEvent.INVALID, emailValidator_invalid);
}
private function emailValidator_valid(evt:ValidationResultEvent):void {
textInput.errorString = "";
message.text = "";
Alert.show(textInput.text, "You entered a valid email address:");
}
private function emailValidator_invalid(evt:ValidationResultEvent):void {
textInput.errorString = evt.message;
message.text = evt.message;
}
private function btn_click(evt:MouseEvent):void {
emailValidator.validate(textInput.text);
}
]]>
</mx:Script>
<mx:Form defaultButton="{btn}">
<mx:FormItem label="email address:"
direction="horizontal">
<mx:TextInput id="textInput"
focusAlpha="0.5" />
<mx:Button id="btn"
label="validate"
click="btn_click(event);" />
</mx:FormItem>
</mx:Form>
<mx:Label id="message" />
</mx:Application>
The following example shows how you can validate an email address using the static EmailValidator.validateEmail() method and then loop over the array of returned ValidationResult objects:
<?xml version="1.0" encoding="utf-8"?>
<!-- http://blog.flexexamples.com/2008/08/29/validating-email-addresses-using-the-emailvalidator-class-in-flex/ -->
<mx:Application name="EmailValidator_validate_test"
xmlns:mx="http://www.adobe.com/2006/mxml"
layout="vertical"
verticalAlign="middle"
backgroundColor="white"
creationComplete="init();">
<mx:Script>
<![CDATA[
import mx.validators.ValidationResult;
import mx.validators.EmailValidator;
import mx.controls.Alert;
import mx.events.ValidationResultEvent;
private var emailValidator:EmailValidator;
private function init():void {
emailValidator = new EmailValidator();
}
private function btn_click(evt:MouseEvent):void {
var arr:Array = EmailValidator.validateEmail(emailValidator, textInput.text, "text");
var obj:ValidationResult;
if (arr.length > 0) {
obj = arr[0] as ValidationResult;
textInput.errorString = obj.errorMessage;
message.text = obj.errorMessage;
} else {
textInput.errorString = "";
message.text = "";
Alert.show(textInput.text, "You entered a valid email address:");
}
}
]]>
</mx:Script>
<mx:Form defaultButton="{btn}">
<mx:FormItem label="email address:"
direction="horizontal">
<mx:TextInput id="textInput"
focusAlpha="0.5" />
<mx:Button id="btn"
label="validate"
click="btn_click(event);" />
</mx:FormItem>
</mx:Form>
<mx:Label id="message" />
</mx:Application>
The following example shows how you can validate an email address by creating an EmailValidator object in MXML and then specifying the source, property, trigger, and triggerEvent properties:
<?xml version="1.0" encoding="utf-8"?>
<!-- http://blog.flexexamples.com/2008/08/29/validating-email-addresses-using-the-emailvalidator-class-in-flex/ -->
<mx:Application name="EmailValidator_validate_test"
xmlns:mx="http://www.adobe.com/2006/mxml"
layout="vertical"
verticalAlign="middle"
backgroundColor="white">
<mx:Script>
<![CDATA[
import mx.controls.Alert;
import mx.events.ValidationResultEvent;
private function emailValidator_valid(evt:ValidationResultEvent):void {
textInput.errorString = "";
message.text = "";
Alert.show(textInput.text, "You entered a valid email address:");
}
private function emailValidator_invalid(evt:ValidationResultEvent):void {
textInput.errorString = evt.message;
message.text = evt.message;
}
]]>
</mx:Script>
<mx:EmailValidator id="emailValidator"
valid="emailValidator_valid(event);"
invalid="emailValidator_invalid(event);"
source="{textInput}"
property="text"
trigger="{btn}"
triggerEvent="click" />
<mx:Form defaultButton="{btn}">
<mx:FormItem label="email address:"
direction="horizontal">
<mx:TextInput id="textInput"
focusAlpha="0.0" />
<mx:Button id="btn"
label="validate" />
</mx:FormItem>
</mx:Form>
<mx:Label id="message" />
</mx:Application>
The following example shows how you can validate an email address by creating an EmailValidator object using ActionScript and then specifying the source, property, trigger, and triggerEvent properties:
<?xml version="1.0" encoding="utf-8"?>
<!-- http://blog.flexexamples.com/2008/08/29/validating-email-addresses-using-the-emailvalidator-class-in-flex/ -->
<mx:Application name="EmailValidator_validate_test"
xmlns:mx="http://www.adobe.com/2006/mxml"
layout="vertical"
verticalAlign="middle"
backgroundColor="white"
initialize="init();">
<mx:Style>
@font-face {
src: local("Verdana");
fontFamily: VerdanaEmbedded;
fontWeight: bold;
}
.errorMessage {
fontFamily: VerdanaEmbedded;
fontWeight: bold;
}
.validTextInputStyle {
backgroundAlpha: 0.6;
backgroundColor: haloGreen;
}
.invalidTextInputStyle {
backgroundAlpha: 0.3;
backgroundColor: red;
}
</mx:Style>
<mx:Script>
<![CDATA[
import mx.validators.EmailValidator;
import mx.controls.Alert;
import mx.events.ValidationResultEvent;
private var emailValidator:EmailValidator;
private function init():void {
emailValidator = new EmailValidator();
emailValidator.source = textInput;
emailValidator.property = "text";
emailValidator.trigger = btn;
emailValidator.triggerEvent = MouseEvent.CLICK;
emailValidator.addEventListener(ValidationResultEvent.VALID, emailValidator_valid);
emailValidator.addEventListener(ValidationResultEvent.INVALID, emailValidator_invalid);
}
private function emailValidator_valid(evt:ValidationResultEvent):void {
textInput.errorString = "";
textInput.styleName = "validTextInputStyle";
Alert.show(textInput.text, "You entered a valid email address:");
}
private function emailValidator_invalid(evt:ValidationResultEvent):void {
textInput.errorString = evt.message;
textInput.styleName = "invalidTextInputStyle";
message.visible = true;
message.text = evt.message;
message.visible = false;
}
]]>
</mx:Script>
<mx:Fade id="dissolveEffect"
startDelay="1500"
alphaFrom="1.0"
alphaTo="0.0" />
<mx:Form defaultButton="{btn}">
<mx:FormItem label="email address:"
direction="horizontal">
<mx:TextInput id="textInput"
focusAlpha="0.5" />
<mx:Button id="btn"
label="validate" />
</mx:FormItem>
</mx:Form>
<mx:Label id="message"
styleName="errorMessage"
hideEffect="{dissolveEffect}" />
</mx:Application>
View source is enabled in the following example.
Peter deHaan
Peter deHaan currently works for Adobe on the Flex SDK QA team. While not working on Flex, Flash, and ColdFusion applications, Peter enjoys making up bios and writing in 3rd person. Peter's rarely updated blog can be found at blogs.adobe.com/pdehaan/, actionscriptexamples.com, airexamples.com, and coldfusionexamples.com.
-
Add Widgets (Content Sidebar)
This is your Content Sidebar. Edit this content that appears here in the widgets panel by adding or removing widgets in the Content Sidebar area.
9 Responses to Validating email addresses using the EmailValidator class in Flex
-
Categories
- Accordion
- AccordionHeader
- ActionScript
- AddChild
- AdvancedDataGrid
- Alert
- alpha
- Animate
- AnimateProperties
- Application
- Application (Spark)
- ArrayCollection
- BarChart
- baseColor
- beta
- beta1
- beta2
- Bitmap
- Bitmap/BitmapData
- BitmapData
- BitmapFill
- BitmapFill (Spark)
- BitmapGraphic
- BitmapImage
- BitmapImage (Spark)
- BitmapImageResizeMode
- Border (Spark)
- BorderContainer (Spark)
- Box
- BuildInfo
- Button
- Button (Spark)
- ButtonBar
- ButtonBar (Spark)
- ByteArray
- Camera
- Charting
- CheckBox
- CheckBox (Spark)
- ClassFactory
- CollectionEvent
- Color
- ColorPicker
- ColorUtil
- ComboBox
- ComboBoxArrowSkin
- Compiler
- Component
- Component (Spark)
- Configuration
- Container
- ContextMenu
- ContextMenuEvent
- ContextMenuItem
- CSSCondition
- CSSSelector
- CSSStyleDeclaration
- CurrencyFormatter
- CursorManager
- Data Binding
- DataGrid
- DataGrid (Spark)
- DataGridColumn
- Date
- DateBase
- DateChooser
- DateField
- DateFormatter
- Debugging
- DefaultComplexItemRenderer
- DefaultTileListEffect
- DropDownList
- DropDownList (Spark)
- DropDownListButtonSkin
- DropDownListSkin
- DropShadowFilter
- E4X
- Effects
- Ellipse
- EmailValidator
- Embed
- Event
- Fade
- FileFilter
- FileReference
- fill
- Filters
- Flash
- Flash Integration
- FlashVars
- Flex 3 SDK
- Flex Builder
- Flex Builder 3
- Flex SDK
- Flex4
- FLVPlayback
- FocusManager
- FontLookup
- Fonts
- Form
- Form (Spark)
- FormHeading (Spark)
- FormItem
- FormItem (Spark)
- Forms
- FTETextField (Spark)
- FullScreen
- FullScreenEvent
- FxAnimateColor
- FxButtonBar
- FxCheckBox
- FXG
- FxHScrollBar
- FxHSlider
- FxList
- FxNumericStepper
- FxRadioButton
- FxRotate3D
- FxScroller
- FxTextArea
- FxTextInput
- FxToggleButton
- FxVScrollBar
- FxVSlider
- getStyleDeclaration()
- GradientEntry
- Graphic (Spark)
- HBox
- HDividedBox
- HGroup (Spark)
- HorizontalLayout
- HorizontalList
- HSBColor (Spark)
- HScrollBar (Spark)
- HSlider
- HSlider (Spark)
- HTML template
- ID3Info
- Image
- Image (Spark)
- ImageSnapshot
- itemRenderer
- JointStyle
- Label
- Label (Spark)
- Legend
- LegendItem
- LigatureLevel
- Line
- LinearGradientStroke
- LineScaleMode
- LinkBar
- LinkButton
- List
- List (Spark)
- Menu
- MenuBar
- Metadata
- MetadataEvent
- Model
- Mouse
- MouseCursor
- MouseEvent
- Move
- Namespace
- NavigatorContent (Spark)
- needsSWF
- NetConnection
- NetStream
- Nightly Builds
- NumberBaseRoundType
- NumberFormatter
- NumberValidator
- NumericCompare
- NumericStepper
- NumericStepper (Spark)
- ObjectProxy
- ObjectUtil
- paddingLeft
- paddingRight
- Panel
- Panel (Spark)
- Parallel
- Path
- PieChart
- PieSeries
- PieSeriesItem
- PopUpAnchor (Spark)
- PopUpButton
- PopUpManager
- ProgrammaticSkin
- ProgressBar
- PropertyChangeEvent
- QName
- RadialGradient
- RadioButton
- RadioButton (Spark)
- RadioButtonGroup
- RadioButtonGroup (Spark)
- Rect
- RegExp
- Regular Expressions
- Repeater
- RichEditableText
- RichText
- RichText (Spark)
- RichTextEditor
- Rotate
- Rotate3D (Spark)
- Scroller (Spark)
- Sequence
- setStyle()
- SimpleText
- SimpleText (Spark)
- skinClass
- Slider
- SliderEvent
- SolidColor
- SolidColorStroke
- Sort
- SortField
- Sound
- SoundEffect
- Spinner (Spark)
- SpriteVisualElement (Spark)
- StageDisplayState
- States
- StringUtil
- StringValidator
- StyleManager
- Styles
- SWFLoader
- SWFObject
- System
- SystemManager
- TabBar
- TabBar (Spark)
- TabNavigator
- TabStopFormat
- Text
- Text Layout Framework (TLF)
- TextArea
- TextArea (Spark)
- TextBox
- TextConverter
- TextEvent
- TextFlow
- TextFlowUtil
- TextFormat
- TextGraphic
- TextInput
- TextInput (Spark)
- TextLayoutFormat
- TextView
- Themes
- TileLayout
- TileList
- TileOrientation
- Timer
- TitleWindow
- TitleWindow (Spark)
- TLF
- ToggleButton (Spark)
- ToggleButtonBar
- ToolTip
- Transition
- Tree
- TruncationOptions
- UIComponent
- UIFTETextField
- Updater
- URLLoader
- URLRequest
- URLUtil
- URLVariables
- ValidationResultEvent
- Validator
- Validators
- VBox
- VDividedBox
- Vector
- VerticalLayout
- VerticalLayout (Spark)
- VGroup (Spark)
- Video
- VideoDisplay
- VideoElement
- VideoElement (Spark)
- VideoEvent
- VideoPlayer (Spark)
- VideoPlayerScrubBar
- ViewStack
- VScrollBar (Spark)
- VSlider
- VSlider (Spark)
- XML
- XMLList
- XMLListCollection
- ZipCodeValidator
- ZipCodeValidatorDomainType
- Zoom
-
Articles
- December 2010
- November 2010
- October 2010
- September 2010
- August 2010
- July 2010
- June 2010
- May 2010
- April 2010
- March 2010
- February 2010
- January 2010
- December 2009
- November 2009
- October 2009
- September 2009
- August 2009
- July 2009
- June 2009
- May 2009
- April 2009
- March 2009
- February 2009
- January 2009
- December 2008
- November 2008
- October 2008
- September 2008
- August 2008
- July 2008
- June 2008
- May 2008
- April 2008
- March 2008
- February 2008
- January 2008
- December 2007
- November 2007
- October 2007
- September 2007
- August 2007
- July 2007
-
Meta


Is there an easy way to validate two textInputs for email (as in, confirmation that the user typed their email address of hotmama22@hotmail.com instead hotmama2@hotmail… assuming that they won’t mistype it the same way twice)?
Is there any way to validate emails like xxxxx.o’xxxxxx@domain.com. It is a valid email. I need to turns on strict interpretation in flex too.
In java email , it can be done as ———– new InternetAddress(vcea.get(i).emailaddr, true );
@Anonymous,
If the default EmailValidator doesn’t validate that email, you can file a Flex SDK bug at http://bugs.adobe.com/flex/ and Adobe can look into it.
As for validating email addresses, you could always write a custom regular expression to validate the email address and use the RegExpValidator class.
Peter
Ok!! i found an online validator tool (for free) but it only does headers validation..
Not sure if it would work on a site..
Help?
http://www.convincingmail.com/emailvalidation.aspx
When I’m typing in a flash input field and a use the @-sign, it completely blocks the typing. I noticed it on my own site and now in your example. I tried it on a diverent computer with the same result. In a HTML field there’s no problem.
Is it me or some thing in the Flash player?
Help?
BTW, I like your examples a lot! Thanks!
The third example doesn’t work for me. If the email address fails the validation for any reason, it always returns the error message:
“An at sign (@) is missing in your e-mail address.”
This time, the address submitted was “gwergwe@@erth.com”
It turns out that I had to change the line (modeled from your third example)
from
var evResults:Array = EmailValidator.validateEmail(emailValidator, tbNewEmailAddress, ‘text’);
to var evResults:Array = EmailValidator.validateEmail(emailValidator, tbNewEmailAddress.text, ‘text’);
and it works as expected
what if i want to add multiple email ids..
i want my email text field to accept more than one eamil id…with seperator “,”
ex-abc@xyz.com,abc@yahoo.com,abc@gmail.com