在Flex中用Validator檢測數字、字符串、Email、電話號碼等 .

在Flex中用Validator檢測數字、字符串、Email、電話號碼等

在上例“ 用Validator檢測必填項”中,我記錄了Validator最簡單的用法。但mx.validators包中的類並非只有Validator一個,他們可以實現信用卡號碼格式檢測(mx.validators.CreditCardValidator)、貨幣格式檢測(mx.validators.CurrencyValidator)、E-mail格式檢測(mx.validators.EmailValidator)等等功能,所有的檢測器列表可以看這裏。這些類都是Validator的子類。

先看效果。下面的範例演示了StringValidator、NumberValidator和EmailValidator的用法。由於這三個類都繼承自Validator,因此都擁有requiredFieldError屬性,用於自定義沒有值的時候的錯誤信息。但是這三個類擁有更多的錯誤信息。要檢測的值越複雜,需要定義的錯誤信息就越多,例如EmailValidator,本例中共定義了9個錯誤信息。

如果不定義錯誤信息,Flex會顯示默認的英文錯誤信息,這顯然也不是我們所需要的。如果想偷懶的話,可以定義幾個最可能出現的錯誤,例如本例的NumberValidator,就沒有定義所有的錯誤信息。

順便還要說一句的是,NumberValidator可以指定要檢測的數字是整數還是實數,這需要用domain屬性來指定。同時,它還可以指定千分位分隔符。

[html] view plaincopy
  1. <?xml version="1.0" encoding="utf-8"?>  
  2.   
  3. <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical" fontSize="12" width="300" height="200">  
  4.   
  5.  <mx:Style>  
  6.  <![CDATA[ 
  7.  .errorTip 
  8.  { 
  9.  fontSize: 12; 
  10.  } 
  11.  ]]>  
  12.  </mx:Style>  
  13.   
  14.  <mx:StringValidator id="nameV" source="{nameTI}" property="text"  
  15.  minLength="2"  
  16.  maxLength="5"   
  17.  requiredFieldError="必須輸入姓名!"  
  18.  tooShortError="姓名過短!"  
  19.  tooLongError="姓名過長!"  
  20.  trigger="{btn}" triggerEvent="click"/>  
  21.   
  22.  <mx:NumberValidator id="ageV" source="{ageTI}" property="text"  
  23.  domain="int"  
  24.  minValue="6"  
  25.  maxValue="100"  
  26.  lowerThanMinError="年齡過小!"  
  27.  exceedsMaxError="年齡過大!"   
  28.  integerError="年齡必須是整數!"  
  29.  invalidCharError='輸入了非數字字符!'  
  30.  requiredFieldError="必須輸入年齡!"  
  31.  trigger="{btn}" triggerEvent="click"/>  
  32.   
  33.  <mx:Validator id="sexV" source="{sexRBG}" property="selectedValue"   
  34.  requiredFieldError="必須選擇性別!"  
  35.  trigger="{btn}" triggerEvent="click"  
  36.  listener="{maleRB}"/>  
  37.   
  38.  <mx:EmailValidator id="emailV" source="{emailTI}" property="text"  
  39.  requiredFieldError="必須輸入E-mail"  
  40.  invalidCharError="E-mail地址中有錯誤字符。"  
  41.  invalidDomainError="E-mail地址中的域名不符合規範。"  
  42.  invalidIPDomainError="E-mail地址中的IP格式域名不符合規範。"  
  43.  invalidPeriodsInDomainError="域名中的“.”錯誤。"  
  44.  missingAtSignError="E-mail地址缺少“@”符號。"  
  45.  missingPeriodInDomainError="域名中缺少“.”"  
  46.  missingUsernameError="E-mail地址缺少用戶名。"  
  47.  tooManyAtSignsError="E-mail地址中的“@”符號太多。"  
  48.  trigger="{btn}" triggerEvent="click"/>  
  49.    
  50.  <mx:FormItem label="姓名:" width="200">  
  51.  <mx:TextInput id="nameTI"/>  
  52.  </mx:FormItem>  
  53.   
  54.  <mx:FormItem label="年齡:" width="200">  
  55.  <mx:TextInput id="ageTI"/>  
  56.  </mx:FormItem>  
  57.   
  58.  <mx:FormItem label="性別:" direction="horizontal" width="200">  
  59.  <mx:RadioButtonGroup id="sexRBG"/>  
  60.  <mx:RadioButton id="maleRB" groupName="sexRBG" label="男" value="1"/>  
  61.  <mx:RadioButton id="femaleRB" groupName="sexRBG" label="女" value="0"/>  
  62.  </mx:FormItem>  
  63.   
  64.  <mx:FormItem label="E-mail:" width="200">  
  65.  <mx:TextInput id="emailTI"/>  
  66.  </mx:FormItem>  
  67.   
  68.  <mx:Button id="btn" label="提交" />  
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章