2013-03-12 75 views
0

目前我正在根据国家/地区下拉值设置ZipCode域。Flex:禁用非美国或加拿大的邮政编码验证

if(this.countryCTComboBox.getSelectedCode() == 'USA') 
       { 
        this.zipCodeTextInputFieldValidator.domain = ZipCodeValidatorDomainType.US_ONLY; 
        this.zipCodeTextInputFieldValidator.wrongLengthError = this.zipCodeTextInputFieldValidator.wrongUSFormatError; 
       } 
       else if(this.countryCTComboBox.getSelectedCode() == 'Canada') 
       { 
        this.zipCodeTextInputFieldValidator.domain = ZipCodeValidatorDomainType.CANADA_ONLY 
        this.zipCodeTextInputFieldValidator.wrongLengthError = this.zipCodeTextInputFieldValidator.wrongCAFormatError; 
       } 

如果从国家下拉列表中选择了美国或加拿大,它可以正常工作。但它给所有其他国家的wrongUSFormat错误。
有什么办法可以禁用验证任何其他国家被选中。

回答

1

该声明的最后部分是根据输入到if语句的字符串运行一个不同的验证程序或根本不验证程序。

} else { 
    trace("this is not a US or Canada Zip code"); 
    // do something else with the zip code now, or do nothing 
    zipCodeTextInputFieldValidator.source = null; 
} 

你可能需要修改这个if/else声明的其他分支,使他们由source设置到适当的文本输入重新启用验证。

我不知道你还需要做什么,但也检查确定你没有限制你的文本字段的所有数字或一定的长度的字符,可能会绊倒你。

+0

在我发布的代码中,我设置了ZipCode的域名。不知道如果你知道Flex的ZipCode组件。在其他语句中,我想完全禁用Zipcodevalidator,但问题在于如何执行。 – 2013-03-12 14:58:58

+1

@HimanshuYadav,你还没有展示你如何连接验证器,但你显然需要解除它。例如,您可以将验证器的source属性设置为null:'zipCodeTextInputFieldValidator.source = null;'我想我会将其添加到答案中;) – 2013-03-12 17:17:42