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>