1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
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;
}
|