mxml ファイルの 3 つのフィールドを検証しようとしています。2 つは必須ですが、1 つは不要です。何かが入力された場合にのみ検証したい郵便番号フィールド。空白の場合は、他の 2 つの必須フィールドが正しく設定されている限り、[送信] ボタンを有効にできるようにします。コード:
<mx:EmailValidator id="emailValidator"
property="text" source="{ownerName}"
valid="emailValidator_validHandler(event)"
invalid="emailValidator_validHandler(event)"/>
<mx:ZipCodeValidator id="zipCodeValidator"
property="text" source="{zip}"
required="false"
valid="zipCodeValidator_validHandler(event)"
invalid="zipCodeValidator_validHandler(event)"/>
<mx:Validator id="roomNameValidator"
property="text" source="{roomName}"
valid="roomNameValidator_validHandler(event)"
invalid="roomNameValidator_validHandler(event)"/>
[Bindable]
private var isRoomNameValid:Boolean;
[Bindable]
private var isOwnerValid:Boolean;
[Bindable]
private var isZipValid:Boolean;
protected function emailValidator_validHandler(event:ValidationResultEvent):void
{
isOwnerValid = (event.type==ValidationResultEvent.VALID);
}
protected function zipCodeValidator_validHandler(event:ValidationResultEvent):void
{
isZipValid = (event.type == ValidationResultEvent.VALID);
}
protected function roomNameValidator_validHandler(event:ValidationResultEvent):void
{
isRoomNameValid = (event.type==ValidationResultEvent.VALID);
}
次に、送信ボタンの有効なプロパティを設定しようとしました:
enabled = "{isOwnerValid && isRoomNameValid && zip.text.length>0?isZipValid:true}"
しかし、うまくいきません。郵便番号フィールドに赤い境界線が表示されていても、郵便番号フィールドに不正なデータを送信できます。