2009-07-13 18 views
2

私はプライベートバリデーターを使用して独自の検証を処理するカスタムtextInputコンポーネントを作成しました。検証は、コンポーネントの状態に応じて有効になります。つまり、コンポーネントの状態が「編集」の場合に検証が有効になります。検証が有効でない場合のtextInputの検証の無効化

しかし、状態が編集から変更されると、内部バリデータは有効になっていませんが、テキストボックスの検証エラーはクリアされません - textInputはまだ赤い枠線を持ち、マウスオーバーすると検証エラーが表示されます。私がしたいのは、バリデータが無効になっていると、エラーの書式設定とエラーメッセージがテキスト入力コントロールからクリアされるということです。

これを行う方法を知っている人はいますか?内部バリデータインスタンスをenabled = falseに設定し、新しいfocusOutEventをディスパッチしようとしましたが、バリデーションエラーの書式設定はまだtextInput contrlに適用されます。

    _validatorInstance.enabled = false; 
       //clear the validation errors if any 
       dispatchEvent(new FocusEvent(FocusEvent.FOCUS_OUT)); 

myField.errorString = ""; 
+1

これが答えではありませんが、コメント、もしmyField.errorString = "";バリデータを使用してエラーをクリアする最善の方法です。バリデータを使用してスキップしたり、条件を自分でチェックしたり、エラー文字列を自分で設定したり、自分でクリアすることができます。エラー文字列を手動で消去するよりも良い方法があります。より多くのコードを記述し、各コントロールを指定してエラー文字列をクリアする必要がある場合は、バリデーターを使用する利点は何ですか? –

答えて

7

感謝空白にすると、有効なイベントまたは無効なイベントはディスパッチされません。

0

ちょうどerrorStringに設定ことに注意してください:私の知る限り、あなたがエラーフィールドからerrorStringにをクリアすることができます知っていて、エラーの書式設定が消えてしなければならないよう

ジョン

3

エラーフィールドからerrorStringをクリアするためにerrorStringの使用に関する問題が見つかりました。 errorStringがクリアされると(プログラムで)、バリデータにバインドされたコンポーネントは、その後の検証でerrortipを表示しません。

var evt:ValidationResultEvent = new ValidationResultEvent(ValidationResultEvent.VALID); 
validatorInstance.dispatchEvent(evt); 

この問題は、4.5 SDKとしてこれ以降は修正されました4.0 SDKを使用してコンパイルされたコードのために流行している:

プログラムによってこのように、この、火をのValidationResultEventでは、errorStringの使用を交換してください。

それはJIRAで報告バグです: http://bugs.adobe.com/jira/browse/SDK-29270

関連する問題