2010-12-09 8 views
1

私は電子メールで簡単なフォームを持っています&パスワード。メール&のパスワードが有効な場合は、送信ボタンを1回表示します。私の考えは、私がhandleValidator関数を実行したときでした。電子メールの "有効な"プロパティの値を確認できます。& "有効な"プロパティを渡します。アイテムの有効なプロパティにアクセスするにはどうすればよいですか?マルチフィールド検証

<?xml version="1.0" encoding="utf-8"?> 
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 
xmlns:s="library://ns.adobe.com/flex/spark"      
    xmlns:mx="library://ns.adobe.com/flex/mx" 
      > 
<fx:Script> 
    import mx.events.ValidationResultEvent; 
    private function handleValidator (eventObj:ValidationResultEvent):void { 

     if(eventObj.type==ValidationResultEvent.VALID 
          // what goes here????? 
          // && emailValidator.valid = true ????? 
          // && passValidator.valid = true ?????? 

         ){ 
      submit.visible = true; 
     } 
     else { 
      submit.visible = false; 
     } 
    } 


</fx:Script> 

<fx:Declarations> 

    <mx:EmailValidator id="emailValidator" source="{email}" property="text" 
         trigger="{email}" triggerEvent="change" 
         valid="handleValidator(event)" invalid="handleValidator(event)" 
         /> 
    <mx:StringValidator id="passValidator" source="{pass}" property="text" 
         trigger="{pass}" triggerEvent="change" 
         valid="handleValidator(event)" invalid="handleValidator(event)" 
         minLength="5" maxLength="10" 
         /> 
</fx:Declarations> 
<s:VGroup> 

<s:TextInput id="email" /> 
<s:TextInput id="pass" /> 
<s:Button id="submit" visible="false" /> 

</s:VGroup> 
</s:Application> 

答えて

6

このような方法で試してください。最初の配列にあなたのバリデータを置く:

<mx:Array id="validators"> 
    <mx:EmailValidator id="emailValidator" source="{email}" property="text"> 

    <mx:StringValidator id="passValidator" source="{pass}" property="text" 
     minLength="5" maxLength="10"/> 
</mx:Array> 

は、両方のあなたの入力に変更イベントハンドラを追加します。

<s:TextInput id="email" change="validate()"/> 
<s:TextInput id="pass" change="validate()"/> 

ハンドラは、検証トリガーされます:

private function validate():void{ 
    //validate both your inputs simultaneously 
    var errors:Array = Validator.validateAll(validators); 
    if (errors.length>0){ 
     //hide submit button 
    }else{ 
     //show submit button 
    } 
} 

をそして、それがすべてです。

+0

とても素敵で非常に合理化されています。私はできる場合は余分なポイントを与えるだろう –

+0

フレックス4.xのために採用する。 タグを使用する必要があります。そうしないと、「コンポーネントを解決できません」というエラーが表示されます。また、それは上記では言及していませんが、あなたが追加する必要があるValidator関数を使用しています: 'import mx.validators.Validator;'いい答えです。 – ggkmath

0

handleValidatorで、event.currentTargetのidをチェックして、電子メールまたはパスワードが検証されているかどうかを調べます。それに応じて、すなわち電子メールまたはパスワードが有効であれば、変数をインクリメントし、有効でない場合は、エラーメッセージの何らかの形式をユーザにディスパッチする。

両方のフィールドが有効な場合、変数は検証されるフィールドの数と等しくなければなりません(変数のデフォルト値が0であれば、送信ボタンを表示できます)。

1

また、検証のために2DHを使用します。また、検証の際によく参照する2つの記事を参照することもできます。

http://joelhooks.com/2009/02/01/form-validation-for-the-lazy-programmer-in-flex/

これは、http 2DH

によって与えられた同じ方法を説明します:// aralbalkan.com/1125

この1つはより良い方法でエラーのツールチップを表示するための少しより多くの機能が追加されます。

希望に役立ちます。

関連する問題