Flex に電話番号バリデーターがあり、電話番号用の TextInput コントロールが 2 つあるとします。基本的に同じ属性を持つ 2 つの別個のバリデーター コントロールを定義したくありませんが、各バリデーターには「ソース」属性が 1 つしかありません。複数のコントロールで同じバリデータを使用するにはどうすればよいですか? (または同等のソリューション)
3877 次
2 に答える
3
インラインではありませんが、たとえばフォームの送信時や、ユーザーがコントロールからタブアウトしたときなど、プログラムで検証を実行できます。単一のPhoneNumberValidatorを使用して2つのフォームフィールドを検証する例を次に示します。[送信]ボタンがクリックされると、検証が行われます。
<mx:Script>
<![CDATA[
private function validatePhoneNumber(txt:TextInput):void
{
v.listener = txt;
v.validate(txt.text);
}
private function btn_click():void
{
validatePhoneNumber(p1);
validatePhoneNumber(p2);
}
]]>
</mx:Script>
<mx:PhoneNumberValidator id="v" allowedFormatChars="()- .+" property="text" requiredFieldError="Required." wrongLengthError="Invalid length." invalidCharError="Invalid character." />
<mx:Form>
<mx:FormItem label="Phone Number 1">
<mx:TextInput id="p1" />
</mx:FormItem>
<mx:FormItem label="Phone Number 2">
<mx:TextInput id="p2" />
</mx:FormItem>
<mx:FormItem>
<mx:Button id="btn" label="Submit" click="btn_click()" />
</mx:FormItem>
</mx:Form>
それが役に立てば幸い!
于 2009-01-23T01:51:24.900 に答える
1
再現する手順:
TextInput は動的に作成します
textInputBox = new MyTextInput; textInputBox.restrict = “0-9.”; textInputBox.maxChars = 24; amountValidator = new NumberValidator(); amountValidator.source = textInputBox; amountValidator.property = “text”; amountValidator.allowNegative = false; amountValidator.domain = “real”; amountValidator.precision = 4; amountValidator.required = false; amountValidator.maxValue = 999999999999.9999; amountValidator.trigger = textInputBox; amountValidator.triggerEvent = Event.CHANGE; amountValidator.addEventListener(ValidationResultEvent.VALID, amountValid); amountValidator.addEventListener(ValidationResultEvent.INVALID, amountInvalid); private function amountValid(event:ValidationResultEvent):void { valid = true; fieldsValidated = true; } private function amountInvalid(event:ValidationResultEvent):void { valid = false; fieldsValidated = true; }
- 作成時に述べたように、制限を超えると赤枠のエラーが表示され、許容範囲に達したときに DEL キーで削除すると、すぐに自動的に緑になります。
- フィールドから離れて、別のテキスト入力の値を変更します(これは単なるテキスト入力です。これはフォーム要素がいくつかあります)。その後、SHIFT + TABS でテキストフィールドを超えた値に戻り、追加の入力された数値を削除します。あなたの価値が受け入れられます。
- もう一度値を入力すると、警告ゾーンに入ります。フィールドを離れて、他のフォーム要素にいくつかの変更を加えます。
- 次に、MOUSE CLICK によってフィールドされた値を超えたテキストに戻り、DEL から削除を開始します。追加の値を削除しても、フィールドはまだ警告ゾーンにいることを示しています。
実際の結果: 追加の数字を削除しても、フィールドは赤のままです
期待される結果: 追加の番号を削除すると、フィールドは通常の状態になります。
この問題の画像は、スクリーン ショットの表示で表示できます。
于 2009-11-24T08:04:00.350 に答える