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
81
82
83
84
85
86
87
88
89
90
91
92
|
;(function (FMS, Backbone, _, $) {
_.extend( FMS, {
SubmitView: FMS.FMSView.extend({
template: 'submit',
id: 'submit-page',
prev: 'details',
events: {
'pagehide': 'destroy',
'pageshow': 'afterDisplay',
'click .ui-btn-left': 'onClickButtonPrev',
'click .ui-btn-right': 'onClickButtonNext',
'click #submit_signed_in': 'onClickSubmit',
'click #submit_sign_in': 'onClickSubmit',
'click #submit_register': 'onClickSubmit'
},
initialize: function() {
this.model.on('sync', this.onReportSync, this );
this.model.on('error', this.onReportError, this );
},
render: function(){
if ( !this.template ) {
console.log('no template to render');
return;
}
template = _.template( tpl.get( this.template ) );
if ( this.model ) {
this.$el.html(template({ model: this.model.toJSON(), user: FMS.currentUser.toJSON() }));
} else {
this.$el.html(template());
}
this.afterRender();
return this;
},
validate: function() {
this.clearValidationErrors();
var isValid = 1;
var email = $('#form_email').val();
if ( !email ) {
isValid = 0;
this.validationError('form_email', FMS.validationStrings.email.required);
// regexp stolen from jquery validate module
} else if ( ! /^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([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])))$/i.test(email) ) {
isValid = 0;
this.validationError('form_email', FMS.validationStrings.email.email);
}
var name = $('#form_name').val();
if ( !name ) {
isValid = 0;
this.validationError('form_name', FMS.validationStrings.name.required );
} else {
var validNamePat = /\ba\s*n+on+((y|o)mo?u?s)?(ly)?\b/i;
if ( name.length < 6 || !name.match( /\S/ ) || name.match( validNamePat ) ) {
isValid = 0;
this.validationError('form_name', FMS.validationStrings.name.validName);
}
}
return isValid;
},
onClickSubmit: function(e) {
this.model.set( 'submit_clicked', $(e.target).attr('id') );
if ( this.validate() ) {
this.model.save();
}
},
onReportSync: function(model, resp, options) {
if ( FMS.currentUser ) {
FMS.currentUser.save();
}
this.navigate( 'sent', 'left' );
},
onReportError: function(model, err, options) {
alert( FMS.strings.sync_error + ': ' + err.errors);
},
_destroy: function() {
this.model.off('sync');
this.model.off('error');
}
})
});
})(FMS, Backbone, _, $);
|