3

我有一个关于 flex 的问题。我有一个表格,并且需要电子邮件。我搜索了这个并找到了以下解决方案:

<mx:FormItem label="Email" id="emailFormItem"  width="100%" styleName="formEven" required="true">                   
<mx:TextInput id="emailTextInput" width="100%" text="{user.email}"/></mx:FormItem>

问题是当我按下确定时,呼叫仍然存在。我知道您必须自己验证以下内容,但有人知道我如何验证字段吗?

解决方案:

我找到了一个解决方案:

您可以为要验证的每个字段创建一个验证器,然后创建此函数:

private function isValid():Boolean {
            var failedValidators:Array = Validator.validateAll([emailValidator, userNameValidator, languageValidator, firstNameValidator, lastNameValidator]);
            return failedValidators.length == 0;
        }

这可以关闭。

4

2 回答 2

2

我通常做的是创建一个名为 isSubmitEnabled 或 isFormComplete 之类的方法。我在需要的每个字段的 keyUp 上调用它并检查所有字段中的值(以及我想要做的任何其他验证),然后只要所有内容都检查出来,我将提交按钮设置为启用,否则我设置提交按钮被禁用。只要您在开始时禁用该按钮,那么您应该一切顺利。

我已经多次使用这种方法,发现它最容易使用,尤其是维护。我将查看文档,看看是否可以看到您可以使用表单项上的 required 属性做什么。

更新:

根据文档:

此属性仅控制指标显示。如果需要输入验证,则必须将验证器附加到子级。

What you want is mx.validators.Validator (http://livedocs.adobe.com/flex/3/langref/mx/validators/Validator.html)

 <mx:Validator id="reqValid" required="true"
    source="{fname}" property="text" 
    valid="handleValid(event)" invalid="handleValid(event)"/>

See the code examples on that link to see how to use it. The example is actually exactly what you are looking for I think. HTH

于 2009-02-25T13:17:42.593 回答
0
<fx:Declarations>
        <mx:RadioButtonGroup id="a1" itemClick="usdradio(event);"/>
        <fx:Model id="creditcard">
            <card>  
                <cardType>{cardTypeCombo.selectedItem.data}</cardType>
                <cardNumber>{cardNumberInput.text}</cardNumber>
            </card>
        </fx:Model>
        <mx:CreditCardValidator id="ccV" 

                                cardTypeSource="{creditcard}" cardTypeProperty="cardType"
                                cardNumberSource="{creditcard}" cardNumberProperty="cardNumber"
                                trigger="{myButton}" triggerEvent="click"
                                cardTypeListener="{cardTypeCombo}"
                                cardNumberListener="{cardNumberInput}"
                                valid="Alert.show('Validation Succeeded!')"/>

        <mx:ArrayCollection id="dp">
            <fx:Object label="American Express" data="American Express"/>
            <fx:Object label="Diners Club" data="Diners Club"/>
            <fx:Object label="Discover" data="Discover"/>
            <fx:Object label="MasterCard" data="MasterCard"/>
            <fx:Object label="Visa" data="Visa"/>
        </mx:ArrayCollection>

        <mx:CurrencyValidator source="{priceUS}" property="text" precision="2" 


                              trigger="{myButton2}" triggerEvent="click" 
                              valid="Alert.show('Validation Succeeded!')"/>
于 2017-07-19T12:03:50.840 回答