土 02/21
FlexのTextInputの拡張の第2弾、URLを入力させてその書式が正しくない場合はエラーとするTextInputの例です。
まず、URLの書式をValidateするVaridatorを作ります。Action Script には、正規表現用のValidatorであるmx.validators.RegExpValidatorがあるので、これを拡張します。
URLValidator
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | package hoge { import mx.validators.RegExpValidator; import mx.validators.ValidationResult; public class URLValidator extends RegExpValidator { public function URLValidator() { super(); this.expression = "^(https?|ftp)(://[a-zA-Z0-9-]+[.][a-zA-Z0-9-.].*)$"; this.property = "text"; this.required = false; } override protected function doValidation(value:Object):Array { var results:Array = super.doValidation(value); if ( results.length > 0 ) { var result:ValidationResult = results[0]; result.errorMessage = "URLの形式が正しくありません。" } return results; } } } |
URLの正規表現はもう少し、よい方法もあると思いますが、だいたいこんな感じ。
20行目で、doValidationの戻り値の0番目のerrorMessageを書き換えています。これを書き換えなければ、「フィールドが無効です」というメッセージになります。
次に、このURLValidatorを実装した、URLTextInputを作成します。
URLTextInput
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | package hoge { import mx.controls.TextInput; import hoge.URLValidator; public class URLTextInput extends TextInput { private var urlValidator:URLValidator; public function URLTextInput() { super(); urlValidator = new URLValidator(); urlValidator.source = this; urlValidator.property = "text"; } } } |

この記事へのトラックバックURL: