Обязательные поля в flex - PullRequest
       28

Обязательные поля в flex

3 голосов
/ 25 февраля 2009

У меня вопрос по флексу. У меня есть форма и адрес электронной почты требуется. Я гуглил это и нашел следующее решение:

<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;
        }

Это можно закрыть.

Ответы [ 2 ]

2 голосов
/ 25 февраля 2009

Что я обычно делаю, это создаю метод с именем что-то вроде isSubmitEnabled или isFormComplete. Я вызываю его в keyUp для каждого обязательного поля и проверяю значения во всех полях (и любую другую проверку, которую я хочу сделать), а затем, пока все проверяется, я устанавливаю кнопку отправки, чтобы включить, в противном случае я устанавливаю кнопка отправки будет отключена. Пока вы отключаете кнопку при запуске, вам будет хорошо идти.

Я использовал этот метод несколько раз и считаю его наиболее простым в использовании и особенно в обслуживании. Я посмотрю на документы и посмотрю, смогу ли я увидеть, что можно сделать с обязательным атрибутом элемента формы.

Обновление:

Согласно документам:

Это свойство контролирует индикатор только показ Вы должны приложить валидатор для детей, если вы требуется подтверждение ввода.

То, что вы хотите, это 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)"/>

См. Примеры кода по этой ссылке, чтобы узнать, как его использовать. Пример, на самом деле, именно то, что вы ищете, я думаю. НТН

0 голосов
/ 19 июля 2017
<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!')"/>
...