Flex Validator的小BUG

Flex中对同一控件如TextInput进行多种格式校验的情况下,如不注意,可能导致错误信息不显示的BUG,比如

<fx:Array id="validators">
  <mx:RegExpValidator source="{txtNewPass}" property="text" required="true" requiredFieldError="请输入新密码"
    expression="^(?:(?=.*[a-zA-Z])(?=.*[0-9])).\{8,\}$" noMatchError="密码长度不少于8位,至少包含数字和字母" />   <cn:CompareValidator source="{txtNewPass}" property="text" required="false"
    comparer="{txtOldPass.text}" comparable="true" compareError="新密码与原密码相同" />
</
fx:Array>

这种情况下会发现txtNewPass这个TextInput的错误提示无法显示,我试了很久,发现原因在于 required="true" requiredFieldError="请输入新密码",必须放在最后一个校验器中,而前面的必须设置required="false",很奇怪,算是一个小BUG了,正确写法:

<fx:Array id="validators">  
  <mx:RegExpValidator source="{txtNewPass}" property="text" required="false"
    expression="^(?:(?=.*[a-zA-Z])(?=.*[0-9])).\{8,\}$" noMatchError="密码长度不少于8位,至少包含数字和字母" />   <cn:CompareValidator source="{txtNewPass}" property="text" required="true" requiredFieldError="请输入新密码"
    comparer
="{txtOldPass.text}" comparable="true" compareError="新密码与原密码相同" />
</
fx:Array>

 

posted @ 2013-12-10 09:39  蚁天  阅读(297)  评论(0编辑  收藏  举报