2009-02-25 115 views
3

我有一個關於flex的問題。 我有一個表格和電子郵件是必需的。 我GOOGLE了這一點,並找到了以下解決方案:flex中的必填字段

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

的問題是,當我按OK通話依然取得。 我知道你必須自己驗證以下內容,但是沒有人知道我如何驗證該字段?

解決方案:

我找到了一個解決方案:

您可以爲您要驗證,然後創建此功能的每個字段創建一個驗證:

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

這可以被關閉。

回答

2

我通常所做的就是創建一個名爲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)"/> 

請參閱鏈路上的代碼示例來看看如何使用它。這個例子實際上正是你想要的,我想。 HTH

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!')"/>