diff --git a/src/js/DayValidator.js b/src/js/DayValidator.js new file mode 100644 index 0000000..99cfaef --- /dev/null +++ b/src/js/DayValidator.js @@ -0,0 +1,65 @@ +/** + * Created by petrashenko on 18.03.2016. + */ + +/** + * Day validator + */ +var DayValidator = (function() { + + /** + * Init class + * @param field + */ + var constructor = function (field) { + + // Length type default values + this.id = 'day'; + this.defaultMinDay = 1; + this.defaultMaxDay = 31; + this.defaultDayFormatMessage = 'Length of value have to be from %s to %s'; + this.field = field; + }, self = constructor.prototype; + + self.export = function () { + var validatorInstance = this; + + return { + + /** + * Day validation + * @param errorMessage + * @returns {FieldValidate} + */ + day: function (errorMessage) { + + var msg = errorMessage || validatorInstance.defaultDayFormatMessage; + + validatorInstance.defaultDayFormatMessage = this.interpolate( + msg, + validatorInstance.defaultMinDay, + validatorInstance.defaultMaxDay + ); + this.reservedValidators.push(validatorInstance.id); + + return this; + } + } + }; + + self.validate = function () { + if(this.field._getFieldValue().length) { + if (this.field._getFieldValue() >= this.defaultMinDay && this.field._getFieldValue() <= this.defaultMaxDay) { + this.field.valid = true; + this.field.removeError(this.id); + } else { + this.field.valid = false; + this.field.addError(this.id, this.defaultDayFormatMessage); + } + }else { + this.field.valid = false; + } + }; + + return constructor; +})(); diff --git a/src/js/EmailValidator.js b/src/js/EmailValidator.js new file mode 100644 index 0000000..44b7779 --- /dev/null +++ b/src/js/EmailValidator.js @@ -0,0 +1,66 @@ +/** + * Created by molodyko on 18.03.2016. + */ + +/** + * Email validator + */ +var EmailValidator = (function() { + + /** + * Init class + * @param field + */ + var constructor = function (field) { + + // Length type default values + this.id = 'email'; + this.defaultTextMessage = 'Email not correct'; + this.field = field; + this.pattern = /^[-._A-Za-z0-9]+@(?:[A-Za-z0-9][-A-Z-a-z0-9]+\.)+[A-Za-z]{2,6}$/; + }, self = constructor.prototype; + + self.export = function () { + var validatorInstance = this; + + return { + + /** + * Email validation + * @param errorMessage + * @returns {FieldValidate} + */ + email: function (errorMessage) { + + var msg = errorMessage || validatorInstance.defaultTextMessage; + + validatorInstance.defaultTextMessage = this.interpolate( + msg, + validatorInstance.defaultMinLengthText, + validatorInstance.defaultMaxLengthText + ); + + this.reservedValidators.push(validatorInstance.id); + + return this; + } + } + }; + + self.validate = function () { + if(this.field._getFieldValue().length) { + if (this.pattern.test(this.field._getFieldValue())) { + this.field.valid = true; + this.field.removeError(this.id); + } else { + this.field.valid = false; + this.field.addError(this.id, this.defaultTextMessage); + } + }else { + this.field.valid = false; + } + }; + + return constructor; +})(); + diff --git a/src/js/FieldValidate.js b/src/js/FieldValidate.js index 830a5f7..aa455ef 100644 --- a/src/js/FieldValidate.js +++ b/src/js/FieldValidate.js @@ -27,10 +27,10 @@ var FieldValidate = (function () { new LengthValidator(this), new RegExpValidator(this), UrlValidator, - EmailValidator, + new EmailValidator(this), new DayValidator(this), new YearValidator(this), - TextValidator + new TextValidator(this) ]; // Extend validators diff --git a/src/js/TextValidator.js b/src/js/TextValidator.js new file mode 100644 index 0000000..371fbf1 --- /dev/null +++ b/src/js/TextValidator.js @@ -0,0 +1,76 @@ +/** + * Created by petrashenko on 18.03.2016. + */ + +/** + * Text validator + */ +var TextValidator = (function() { + + /** + * Init class + * @param field + */ + var constructor = function (field) { + + // Length type default values + this.id = 'text'; + this.defaultMinLengthText = 2; + this.defaultMaxLengthText = 20; + this.defaultTextMessage = 'Length of value have to be from %s to %s'; + this.field = field; + }, self = constructor.prototype; + + self.export = function () { + var validatorInstance = this; + + return { + + /** + * Text validation + * @param errorMessage + * @returns {FieldValidate} + */ + text: function (errorMessage) { + + var msg = errorMessage || validatorInstance.defaultTextMessage; + + validatorInstance.defaultTextMessage = this.interpolate( + msg, + validatorInstance.defaultMinLengthText, + validatorInstance.defaultMaxLengthText + ); + + this.reservedValidators.push(validatorInstance.id); + + return this; + }, + + minLength : function(num) { + validatorInstance.defaultMinLengthText = num; + return this; + }, + + maxLength : function(num) { + validatorInstance.defaultMaxLengthText = num; + return this; + } + } + }; + + self.validate = function () { + if(this.field._getFieldValue().length) { + if (this.field._getFieldValue().length >= this.defaultMinLengthText && this.field._getFieldValue().length <= this.defaultMaxLengthText) { + this.field.valid = true; + this.field.removeError(this.id); + } else { + this.field.valid = false; + this.field.addError(this.id, this.defaultTextMessage); + } + }else { + this.field.valid = false; + } + }; + + return constructor; +})(); diff --git a/src/js/YearValidator.js b/src/js/YearValidator.js new file mode 100644 index 0000000..024dd59 --- /dev/null +++ b/src/js/YearValidator.js @@ -0,0 +1,65 @@ +/** + * Created by petrashenko on 18.03.2016. + */ + +/** + * Year validator + */ +var YearValidator = (function() { + + /** + * Init class + * @param field + */ + var constructor = function (field) { + + // Length type default values + this.id = 'year'; + this.defaultMinYear = 1930; + this.defaultMaxYear = 2016; + this.defaultYearFormatMessage = 'Length of value have to be from %s to %s'; + this.field = field; + }, self = constructor.prototype; + + self.export = function () { + var validatorInstance = this; + + return { + + /** + * Year validation + * @param errorMessage + * @returns {FieldValidate} + */ + year: function (errorMessage) { + + var msg = errorMessage || validatorInstance.defaultYearFormatMessage; + + validatorInstance.defaultYearFormatMessage = this.interpolate( + msg, + validatorInstance.defaultMinYear, + validatorInstance.defaultMaxYear + ); + this.reservedValidators.push(validatorInstance.id); + + return this; + } + } + }; + + self.validate = function () { + if(this.field._getFieldValue().length) { + if (this.field._getFieldValue() >= this.defaultMinYear && this.field._getFieldValue() <= this.defaultMaxYear) { + this.field.valid = true; + this.field.removeError(this.id); + } else { + this.field.valid = false; + this.field.addError(this.id, this.defaultYearFormatMessage); + } + }else { + this.field.valid = false; + } + }; + + return constructor; +})();