ripple-core
Version:
Ripple is an interactive audience response system that allows presenters to survey audience members in real time communication through their mobile devices.
80 lines (66 loc) • 2.81 kB
JavaScript
function AccountValidator() {
// build array maps of the form inputs & control groups //
this.formFields = [$('#name-tf'), $('#email-tf'), $('#user-tf'), $('#pass-tf'), $('#confirm-tf')];
this.controlGroups = [$('#name-cg'), $('#email-cg'), $('#user-cg'), $('#pass-cg'), $('#confirm-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');
}
// Check to see if password field is available onscreen
if( this.formFields[3].length !== 0 ) {
if (this.validatePassword(this.formFields[3].val()) == false) {
// Validate field since it is present
this.controlGroups[3].addClass('error');
e.push('Password Should Be At Least 6 Characters');
}
if( this.formFields[3].val() !== this.formFields[4].val() ) {
this.controlGroups[4].addClass('error');
e.push('Password confirmation does not match');
}
}
if (e.length) this.showErrors(e);
return e.length === 0;
}