diff options
Diffstat (limited to 'public/js/form-validators')
-rw-r--r-- | public/js/form-validators/accountValidator.js | 80 | ||||
-rw-r--r-- | public/js/form-validators/emailValidator.js | 39 | ||||
-rw-r--r-- | public/js/form-validators/loginValidator.js | 29 | ||||
-rw-r--r-- | public/js/form-validators/resetValidator.js | 37 |
4 files changed, 185 insertions, 0 deletions
diff --git a/public/js/form-validators/accountValidator.js b/public/js/form-validators/accountValidator.js new file mode 100644 index 0000000..6de2dfc --- /dev/null +++ b/public/js/form-validators/accountValidator.js @@ -0,0 +1,80 @@ + +function AccountValidator(){ + +// build array maps of the form inputs & control groups // + + this.formFields = [$('#name-tf'), $('#email-tf'), $('#user-tf'), $('#pass-tf')]; + this.controlGroups = [$('#name-cg'), $('#email-cg'), $('#user-cg'), $('#pass-cg')]; + +// bind the form-error modal window to this controller to display any errors // + + this.alert = $('.modal-form-errors'); + this.alert.modal({ show : false, keyboard : true, backdrop : true}); + + this.validateName = function(s) + { + return s.length >= 3; + } + + this.validatePassword = function(s) + { + // if user is logged in and hasn't changed their password, return ok + if ($('#userId').val() && s===''){ + return true; + } else{ + return s.length >= 6; + } + } + + this.validateEmail = function(e) + { + var re = /^(([^<>()[\]\\.,;:\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,}))$/; + return re.test(e); + } + + this.showErrors = function(a) + { + $('.modal-form-errors .modal-body p').text('Please correct the following problems :'); + var ul = $('.modal-form-errors .modal-body ul'); + ul.empty(); + for (var i=0; i < a.length; i++) ul.append('<li>'+a[i]+'</li>'); + this.alert.modal('show'); + } + +} + +AccountValidator.prototype.showInvalidEmail = function() +{ + this.controlGroups[1].addClass('error'); + this.showErrors(['That email address is already in use.']); +} + +AccountValidator.prototype.showInvalidUserName = function() +{ + this.controlGroups[2].addClass('error'); + this.showErrors(['That username is already in use.']); +} + +AccountValidator.prototype.validateForm = function() +{ + var e = []; + for (var i=0; i < this.controlGroups.length; i++) this.controlGroups[i].removeClass('error'); + if (this.validateName(this.formFields[0].val()) == false) { + this.controlGroups[0].addClass('error'); e.push('Please Enter Your Name'); + } + if (this.validateEmail(this.formFields[1].val()) == false) { + this.controlGroups[1].addClass('error'); e.push('Please Enter A Valid Email'); + } + if (this.validateName(this.formFields[2].val()) == false) { + this.controlGroups[2].addClass('error'); + e.push('Please Choose A Username'); + } + if (this.validatePassword(this.formFields[3].val()) == false) { + this.controlGroups[3].addClass('error'); + e.push('Password Should Be At Least 6 Characters'); + } + if (e.length) this.showErrors(e); + return e.length === 0; +} + +
\ No newline at end of file diff --git a/public/js/form-validators/emailValidator.js b/public/js/form-validators/emailValidator.js new file mode 100644 index 0000000..5a87c04 --- /dev/null +++ b/public/js/form-validators/emailValidator.js @@ -0,0 +1,39 @@ + +function EmailValidator(){ + +// bind this to _local for anonymous functions // + + var _local = this; + +// modal window to allow users to request credentials by email // + _local.retrievePassword = $('#get-credentials'); + _local.retrievePassword.modal({ show : false, keyboard : true, backdrop : true }); + _local.retrievePasswordAlert = $('#get-credentials .alert'); + _local.retrievePassword.on('show', function(){ $('#get-credentials-form').resetForm(); _local.retrievePasswordAlert.hide();}); + +} + +EmailValidator.prototype.validateEmail = function(e) +{ + var re = /^(([^<>()[\]\\.,;:\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,}))$/; + return re.test(e); +} + +EmailValidator.prototype.showEmailAlert = function(m) +{ + this.retrievePasswordAlert.attr('class', 'alert alert-error'); + this.retrievePasswordAlert.html(m); + this.retrievePasswordAlert.show(); +} + +EmailValidator.prototype.hideEmailAlert = function() +{ + this.retrievePasswordAlert.hide(); +} + +EmailValidator.prototype.showEmailSuccess = function(m) +{ + this.retrievePasswordAlert.attr('class', 'alert alert-success'); + this.retrievePasswordAlert.html(m); + this.retrievePasswordAlert.fadeIn(500); +}
\ No newline at end of file diff --git a/public/js/form-validators/loginValidator.js b/public/js/form-validators/loginValidator.js new file mode 100644 index 0000000..066e822 --- /dev/null +++ b/public/js/form-validators/loginValidator.js @@ -0,0 +1,29 @@ + +function LoginValidator(){ + +// bind a simple alert window to this controller to display any errors // + + this.loginErrors = $('.modal-alert'); + this.loginErrors.modal({ show : false, keyboard : true, backdrop : true }); + + this.showLoginError = function(t, m) + { + $('.modal-alert .modal-header h3').text(t); + $('.modal-alert .modal-body p').text(m); + this.loginErrors.modal('show'); + } + +} + +LoginValidator.prototype.validateForm = function() +{ + if ($('#user-tf').val() == ''){ + this.showLoginError('Whoops!', 'Please enter a valid username'); + return false; + } else if ($('#pass-tf').val() == ''){ + this.showLoginError('Whoops!', 'Please enter a valid password'); + return false; + } else{ + return true; + } +}
\ No newline at end of file diff --git a/public/js/form-validators/resetValidator.js b/public/js/form-validators/resetValidator.js new file mode 100644 index 0000000..71c8792 --- /dev/null +++ b/public/js/form-validators/resetValidator.js @@ -0,0 +1,37 @@ + +function ResetValidator(){ + +// modal window to allow users to reset their password // + this.setPassword = $('#set-password'); + this.setPassword.modal({ show : false, keyboard : false, backdrop : 'static' }); + this.setPasswordAlert = $('#set-password .alert'); +} + +ResetValidator.prototype.validatePassword = function(s) +{ + if (s.length >= 6){ + return true; + } else{ + this.showAlert('Password Should Be At Least 6 Characters'); + return false; + } +} + +ResetValidator.prototype.showAlert = function(m) +{ + this.setPasswordAlert.attr('class', 'alert alert-error'); + this.setPasswordAlert.html(m); + this.setPasswordAlert.show(); +} + +ResetValidator.prototype.hideAlert = function() +{ + this.setPasswordAlert.hide(); +} + +ResetValidator.prototype.showSuccess = function(m) +{ + this.setPasswordAlert.attr('class', 'alert alert-success'); + this.setPasswordAlert.html(m); + this.setPasswordAlert.fadeIn(500); +}
\ No newline at end of file |