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>
原文地址:https://www.cnblogs.com/niss/p/3466894.html