ひがやすを技術ブログ

電通国際情報サービスのプログラマ

バリデーション

入力値のバリデーションをするクラスを作成するには、mx.validators.Validatorを継承して、function doValidation(value) : Voidをオーバーライドして、バリデーションがNGなら、validateError()でエラーを報告します。
次のサンプルは、数値とアルファベットのみを受け付けるバリデータです。

AlphabetNumberValidator.as


class AlphabetNumberValidator extends mx.validators.Validator {
function doValidation(value) : Void {
if (value != null) {
var s:String = String(value);
var i:Number;
for (i = 0; i < s.length; ++i) {
var n:Number = s.charCodeAt(i);
if (n >= 48 && n <= 57 || n >= 97 && n <= 122 || n >= 65 && n <= 90) {
} else {
validationError("alphabetNumber",
"アルファベットか数字でなければなりません");
break;
}
}
}
}
}
このバリデータをMXMLに組み込みます。field属性で、何を検証するのか指定します。

ValidationApp.mxml





{myInput.text}





ValidationApp_script.as


function validate() {
if (mx.validators.Validator.isStructureValid(this, 'myModel')) {
mx.controls.Alert.show(
"バリデーションOKです", "Success");
} else {
mx.controls.Alert.show(
"エラーを修正してもう一度入力してください", "Problem");
}
}
実際にバリデータが動くのは、mx.validators.Validator.isStructureValid()を呼び出したときです。バリデーションがNGの場合、そのコンポーネントのふちが赤くなり、マウスを近づけると、バルーンでメッセージが示されます。