123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143 |
- define("dojox/validate/_base", [
- "dojo/_base/lang",
- "dojo/regexp", // dojo core expressions
- "dojo/number", // dojo number expressions
- "./regexp" // additional expressions
- ], function(lang, regexp, number, xregexp) {
- var validate = lang.getObject("dojox.validate", true);
- /*=====
- validate = dojox.validate;
- =====*/
- validate.isText = function(/*String*/value, /*Object?*/flags){
- // summary:
- // Checks if a string has non whitespace characters.
- // Parameters allow you to constrain the length.
- //
- // value: A string
- // flags: {length: Number, minlength: Number, maxlength: Number}
- // flags.length If set, checks if there are exactly flags.length number of characters.
- // flags.minlength If set, checks if there are at least flags.minlength number of characters.
- // flags.maxlength If set, checks if there are at most flags.maxlength number of characters.
-
- flags = (typeof flags == "object") ? flags : {};
-
- // test for text
- if(/^\s*$/.test(value)){ return false; } // Boolean
-
- // length tests
- if(typeof flags.length == "number" && flags.length != value.length){ return false; } // Boolean
- if(typeof flags.minlength == "number" && flags.minlength > value.length){ return false; } // Boolean
- if(typeof flags.maxlength == "number" && flags.maxlength < value.length){ return false; } // Boolean
-
- return true; // Boolean
- };
- validate._isInRangeCache = {};
- validate.isInRange = function(/*String*/value, /*Object?*/flags){
- // summary:
- // Validates whether a string denoting a number
- // is between a max and min.
- //
- // value: A string
- // flags: {max:Number, min:Number, decimal:String}
- // flags.max A number, which the value must be less than or equal to for the validation to be true.
- // flags.min A number, which the value must be greater than or equal to for the validation to be true.
- // flags.decimal The character used for the decimal point. Default is ".".
-
- value = number.parse(value, flags);
- if(isNaN(value)){
- return false; // Boolean
- }
-
- // assign default values to missing paramters
- flags = (typeof flags == "object") ? flags : {};
- var max = (typeof flags.max == "number") ? flags.max : Infinity,
- min = (typeof flags.min == "number") ? flags.min : -Infinity,
- dec = (typeof flags.decimal == "string") ? flags.decimal : ".",
-
- cache = validate._isInRangeCache,
- cacheIdx = value + "max" + max + "min" + min + "dec" + dec
- ;
- if(typeof cache[cacheIdx] != "undefined"){
- return cache[cacheIdx];
- }
- cache[cacheIdx] = !(value < min || value > max);
- return cache[cacheIdx]; // Boolean
- };
- validate.isNumberFormat = function(/* String */value, /* Object? */flags){
- // summary: Validates any sort of number based format
- //
- // description:
- // Validates any sort of number based format. Use it for phone numbers,
- // social security numbers, zip-codes, etc. The value can be validated
- // against one format or one of multiple formats.
- //
- // Format Definition
- // | # Stands for a digit, 0-9.
- // | ? Stands for an optional digit, 0-9 or nothing.
- // All other characters must appear literally in the expression.
- //
- // example:
- // | "(###) ###-####" -> (510) 542-9742
- // | "(###) ###-#### x#???" -> (510) 542-9742 x153
- // | "###-##-####" -> 506-82-1089 i.e. social security number
- // | "#####-####" -> 98225-1649 i.e. zip code
- //
- // value: A string
- //
- // flags: Object?
- // FIXME: make pseudo-object for this
- // format: String
- //
- // flags.format A string or an Array of strings for multiple formats.
- //
- // example:
- // | // returns true:
- // | dojox.validate.isNumberFormat("123-45", { format:"###-##" });
- //
- // example:
- // Check Multiple formats:
- // | dojox.validate.isNumberFormat("123-45", {
- // | format:["### ##","###-##","## ###"]
- // | });
- //
- var re = new RegExp("^" + xregexp.numberFormat(flags) + "$", "i");
- return re.test(value); // Boolean
- };
- validate.isValidLuhn = function(/* String */value){
- // summary: Validate a String value against the Luhn algorithm.
- // description:
- // Validate a String value against the Luhn algorithm to verify
- // its integrity.
-
- var sum = 0, parity, curDigit;
- if(!lang.isString(value)){
- value = String(value);
- }
- value = value.replace(/[- ]/g,''); //ignore dashes and whitespaces
- parity = value.length % 2;
- for(var i = 0; i < value.length; i++){
- curDigit = parseInt(value.charAt(i));
- if(i % 2 == parity){
- curDigit *= 2;
- }
- if(curDigit > 9){
- curDigit -= 9;
- }
- sum += curDigit;
- }
- return !(sum % 10); // Boolean
- };
- return validate;
- });
|