【问题标题】:How can we use Compare validator in flex我们如何在 flex 中使用比较验证器
【发布时间】:2012-08-09 09:15:16
【问题描述】:

Flex 中有比较验证器吗?我搜索但无法找到它。有没有类似比较验证器的验证器?

我的例子是如何使用 flex 验证器检查密码和确认密码是否相同

<s:TextInput id="password" width="218" textAlign="left" contentBackgroundColor="#FFFFFF"/>
<s:TextInput id="confirmpassword" width="218" textAlign="left" contentBackgroundColor="#FFFFFF"/> 

【问题讨论】:

  • 你能说得更清楚些吗?有几个 flex 验证器,或者您可以创建自己的.. 请举例说明您想要实现的目标
  • @AdrianPirvulescu 请查看上面的示例。
  • 是我没听懂还是你只是在寻找==
  • flex 中没有比较验证器。那么有没有这样的验证器
  • 好的,现在我明白你的意思了。看起来您需要的是一个字符串验证器,用于将输入的文本与给定的字符串匹配。现在写一个答案... :)

标签: actionscript-3 apache-flex flex4


【解决方案1】:

有以下 2 个电子邮件字段,首先我们定义一个标准电子邮件验证器,然后我们定义一个自定义电子邮件验证器,附加在答案末尾。

<mx:HBox
    verticalAlign   = "middle"
    color           = "#101010">
    <mx:Label
        text        = "E-Mail Address:"
        width       = "120"/>
    <mx:TextInput
        id          = "txtEmail"
        width       = "220"/>
</mx:HBox>
<mx:HBox
    verticalAlign   = "middle"
    color           = "#101010">
    <mx:Text
        text        = "Rewrite E-Mail Address:"
        width       = "120"/>
    <mx:TextInput
        id          = "txtEmail2"
        width       = "220"/>
</mx:HBox> 

现在我们添加验证器

<mx:EmailValidator
    id              = "valEmail"
    required        = "true"
    source          = "{txtEmail}"
    property        = "text"
    invalidCharError            = "Invalid format"
    invalidDomainError          = "Invalid format"
    invalidIPDomainError        = "Invalid format"
    invalidPeriodsInDomainError = "Invalid format"
    missingAtSignError          = "Invalid format"
    missingPeriodInDomainError  = "Invalid format"
    missingUsernameError        = "Invalid format"
    />

<validators:EmailConfirmationValidator
    id              = "valEmail2"
    required        = "true"
    source          = "{txtEmail2}"
    property        = "text"
    confirmationSource  = "{txtEmail}"
    confirmationProperty= "text"/>

另外,我们需要定义我在“验证器”包中声明的 EmailConfirmationValidator 类

package validators
{
import mx.validators.ValidationResult;
import mx.validators.Validator;

public class EmailConfirmationValidator extends Validator
{
    public var confirmationSource: Object;
    public var confirmationProperty: String;

    public function EmailConfirmationValidator()
    {
        super();
    }

    // Define the doValidation() method.
    override protected function doValidation(value:Object):Array 
    {
        // Call base class doValidation().
        var results:Array = super.doValidation(value);

        if (value.text != value.confirmation)
        {
            results.push(new ValidationResult(true, null, "Mismatch",
                "Emails do not match!"));
        }

        return results;
    }       

    /**
     *  @private
     *  Grabs the data for the confirmation password from its different sources
     *  if its there and bundles it to be processed by the doValidation routine.
     */
    override protected function getValueFromSource():Object
    {
        var value:Object = {};

        value.text = super.getValueFromSource();

        if (confirmationSource && confirmationProperty)
        {
            value.confirmation = confirmationSource[confirmationProperty];
        }

        return  value;
    }  


}
}

如果您需要手动检查表单中的验证器。例如在提交内容进行注册之前,使用以下方法

public function isValid():Boolean
{
var validators:Array            = [valEmail, valEmail2];
    var validatorErrorArray:Array   = Validator.validateAll(validators);;
var isValidForm:Boolean         = validatorErrorArray.length == 0;

    return isValidForm;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-13
    • 1970-01-01
    • 2010-12-23
    • 1970-01-01
    • 2017-12-07
    相关资源
    最近更新 更多