Home | Flex examples | Flex Components | Validators | My custom validator. Собственный validator

My custom validator. Собственный validator

Font size: Decrease font Enlarge font
image

Пример использования класса Validator для проверки значений текстовых полей

Данный класс является расширением стандартного класса Validator и делает следующие проверки:

  • Dutch bank account number

  • Dutch zip code

  • Time, format - hh:mm

  • Date, format - YYYY-DD-MM

  • DateTime, format - YYYY-DD-MM hh:mm

  • Alphanumeric

  • Number

  • Integer

  • Negative number

  • Positive number


Использование класса
...........
var f_validator:FieldsValidator = new FieldsValidator();
var f_validator_obj:Object = new Object();
f_validator_obj.type = val_string; // it's a string that shows what type of validating we will use
f_validator_obj.source = obj; // source
f_validator.listener = obj; //object for validating
if(f_validator.validate(f_validator_obj)
.results !=null)
return false;
.............
Код класса:
package classes
{
import mx.validators.Validator;
import mx.validators.ValidationResult;

public class FieldsValidator extends Validator
{
// Define Array for the return value of doValidation().
private var results:Array;

// Constructor.
public function FieldsValidator() {
// Call base class constructor.
super();
}

override protected function doValidation(validation_obj:Object):Arra
y {
// Clear results Array.
results = [];
// Call base class doValidation().
results = super.doValidation(validation_obj);
// Return if there are errors.
if (results.length > 0)
return results;

switch(validation_obj.type){
//dutch bank account number validating
case 'isbankrekeningnummer':
var inputValue:Number = Number(validation_obj.source.text);
var value:Number = validation_obj.source.text;
// If input value is not a number, or contains no value, issue a validation error.
if (isNaN(inputValue) || !value){
results.push(new ValidationResult(true, null, "NaN", "You must enter a number."));
return results;
}
var checksum:int = 0;
var temp_string:String = new String();
if (String(inputValue).length <= 10) {
//make sure we have a 10 digit number
while(temp_string.length < (10-String(inputValue).length) ){
temp_string += "0";
}
temp_string += String(inputValue);
//create checksum
for (var i:int=0; i < 10; i++) {
checksum += ( Number(temp_string.charAt(i)) * (10 - i) );
}
inputValue = Number(temp_string);
//Banknumber is 'correct' if we can divide checksum by 11
if (inputValue > 0 && checksum % 11 == 0){
;
}else{
results.push(new ValidationResult(true, null, "Error", "Bank Account number is not correct"));
return results;
}
}else{
results.push(new ValidationResult(true, null, "Error", "Too long number"));
}
break;
//end of bank account validating
//dutch zip code
case 'ispostcode': // example 1234 AA
var postCode:String = validation_obj.source.text;
var pattern:RegExp = /^[0-9]{4}\ {0,1}[A-Za-z]{2}$/;
if(pattern.test(postCode) == false)
results.push(new ValidationResult(true, null, "Error", "Post code is not correct"));
return results;
break;
//end of dutch zip code
//IsTime
case 'istime'://IsTime format hh:mm
var isTime:String = validation_obj.source.text;
var patternTime:RegExp = /((^[0-9])|([0-1])([0-9])|(2)([0-4])):((
[0-9])|([0-5])([0-9]))$/;
if(patternTime.test(isTime) == false)
results.push(new ValidationResult(true, null, "Error", "Not correct time format"));
return results;
break;
//end of IsTime
//IsDate
case 'isdate'://IsDate format YYYY-DD-MM
var isDate:String = validation_obj.source.text;
var patternDate:RegExp = /(^[1-9])([0-9]{1,3})-((0)([1-9])|(1)([0-2]
)|([1-9]))-(([1-9])|(0)([1-9])|([1-2])([0-9])|(31))$/;
if(patternDate.test(isDate) == false)
results.push(new ValidationResult(true, null, "Error", "Not correct date format"));
return results;
break;
//end of IsDate
//IsDateTime
case 'isdatetime'://IsDateTime YYYY-DD-MM hh:mm
var isDateTime:String = validation_obj.source.text;
var patternDateTime:RegExp = /(^[1-9])([0-9]{1,3})-((0)([1-9])|(1)([0-2]
)|([1-9]))-(([1-9])|(0)([1-9])|([1-2])([0-9])|(31)) ((^[0-9])|([0-1])([0-9])|(2)([0-4])):(([0-9])|([0-5])([0-9]))$/;
if(patternDateTime.test(isDateTime) == false)
results.push(new ValidationResult(true, null, "Error", "Not correct date time format"));
return results;
break;
//end of IsDateTime
//alphanumeric
case 'isalfanumeriek':
var alphaNumeric:String = validation_obj.source.text;
var pattern_a:RegExp = /^[A-Za-z0-9]+$/;
if(pattern_a.test(alphaNumeric) == false)
results.push(new ValidationResult(true, null, "Error", "Not is alphanumeric character"));
return results;
break;
//end of alphanumeric
//Is number
case 'isnumber':
var inputValueNum:Number = Number(validation_obj.source.text);
var valueNum:Number = validation_obj.source.text;
if ( isNaN(inputValueNum) || !valueNum){
results.push(new ValidationResult(true, null, "NaN", "You must enter a number."));
return results;
}
break;
//end of Is number
//positive number
case 'isinteger':
var inputValueP:Number = Number(validation_obj.source.text);
var valueP:Number = validation_obj.source.text;
if ( isNaN(inputValueP) || !valueP || inputValueP < 0 ){
results.push(new ValidationResult(true, null, "NaN", "You must enter a positive number."));
return results;
}
break;
//end of positive number
//negative number
case 'isdecimal':
var inputValueN:Number = Number(validation_obj.source.text);
var valueN:Number = validation_obj.source.text;
if ( isNaN(inputValueN) || !valueN || inputValueN >= 0 ){
results.push(new ValidationResult(true, null, "NaN", "You must enter a negative number."));
return results;
}
break;
//end of negative number
}
return results;
}
}
}

Comments ( posted):

Post your comment comment

Please enter the code you see in the image:

  • email Email to a friend
  • print Print version
  • Plain text Plain text
Tags
No tags for this article
Rate this article
0