automizy-js
Version:
Automizy widget collection
161 lines (156 loc) • 7.89 kB
JavaScript
define([
'automizy/core',
'automizy/input',
'automizy/functions/getUniqueString'
], function () {
Validator = function (obj) {
var t = this;
t.d = {
email: false,
domain:false,
url:false,
domainOrUrl:false,
int:false,
number:false,
minLength:false,
maxLength:false,
min:false,
max:false,
file:false,
sameas:false,
isValid:true,
errors:[],
id: 'automizy-validator-' + $A.getUniqueString(),
regular:{
email:/^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/,
domain:/^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$|^(([a-zA-Z]|[a-zA-Z][a-zA-Z0-9\-]*[a-zA-Z0-9])\.)*([A-Za-z]|[A-Za-z][A-Za-z0-9\-]*[A-Za-z0-9])$|^\s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(%.+)?\s*$/,
url:/^(((https?|ftp):\/\/)|(www\.))(((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)?(((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?)(:\d*)?)(\/((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)?(\?((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(\#((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/i
},
input:false,
value:false
};
if(typeof obj !== "undefined"){
if(typeof obj === "function" && obj instanceof Input){
t.d.input = obj;
}else if(typeof obj === 'object') {
if(typeof obj.input !== 'undefined'){
if(obj.input instanceof Input){
t.d.input = obj.input;
}else if(typeof obj.input === 'string'){
t.d.input = $A.getInput(obj.input) || false;
}
}
}
if(t.d.input instanceof Input)t.d.value = t.d.input.val();
}
if(typeof obj === 'object') {
if (typeof obj.email !== 'undefined' && obj.email !== false)
t.email();
if (typeof obj.domain !== 'undefined' && obj.domain !== false)
t.domain();
if (typeof obj.url !== 'undefined' && obj.url !== false)
t.url();
if (typeof obj.domainOrUrl !== 'undefined' && obj.domainOrUrl !== false)
t.domainOrUrl();
if (typeof obj.int !== 'undefined' && obj.int !== false)
t.int();
if (typeof obj.num !== 'undefined' && obj.num !== false)
t.num();
if (typeof obj.minLength !== 'undefined')
t.minLength(obj.minLength);
}
};
var p = Validator.prototype;
p.email = function () {
this.d.email = true;
var a = this.d.regular.email.test(this.d.value);
if(a === false){
this.d.isValid = false;
this.d.errors.push("Invalid email address");
}
return this.d.isValid;
};
p.domain = function () {
this.d.domain = true;
var a = this.d.regular.domain.test(this.d.value);
if(a === false){
this.d.isValid = false;
this.d.errors.push("Invalid domain");
}
return this.d.isValid;
};
p.url = function () {
this.d.url = true;
var a = this.d.regular.url.test(this.d.value);
if(a === false){
this.d.isValid = false;
this.d.errors.push("Invalid URL");
}
return this.d.isValid;
};
p.domainOrUrl = function () {
this.d.domainOrUrl = true;
var a = this.d.regular.domain.test(this.d.value) || this.d.regular.url.test(this.d.value);
if(a === false){
this.d.isValid = false;
this.d.errors.push("Invalid domain or URL");
}
return this.d.isValid;
};
p.int = p.integer = function () {
this.d.int = true;
var a = (this.d.value == +this.d.value && this.d.value == (this.d.value | 0));
if(a === false){
this.d.isValid = false;
this.d.errors.push("Not an integer");
}
return this.d.isValid;
};
p.num = p.number = function () {
this.d.number = true;
if(isNaN(this.d.value)){
this.d.isValid = false;
this.d.errors.push("Not a number");
}
return this.d.isValid;
};
p.minLength = p.minLen = function (len) {
len = parseInt(len);
this.d.minLength = len;
if(this.d.value.length < len){
this.d.isValid = false;
this.d.errors.push("Too short");
}
return this.d.isValid;
};
p.input = p.setInput = function (input) {
if(input instanceof Input){
this.d.input = input;
t.d.value = input.val();
return this;
}
if(!input)return this.d.input;
return this;
};
p.errors = function () {
return this.d.errors;
};
$A.m.Validator = Validator;
$A.newValidator = $A.createValidator = function(obj){
var t = new Validator(obj);
$A.d.validators[t.d.id] = t;
return t;
};
$A.getValidator = function(id){
return $A.d.validatorss[id];
};
$A.getAllValidator = function(){
return $A.d.validators;
};
$A.removeValidator = $A.deleteValidator = function(id){
return $A.getValidator[id].remove();
};
$A.removeAllValidator = $A.deleteAllValidator = function(id){
for(i in $A.getAllValidator())$A.getAllValidator()[i].remove();
};
});