@@ -21,7 +21,9 @@ JS.Modules.Newsletter = (function() {
21
21
_settings = $ . extend ( {
22
22
$element : $ ( '.js-newsletter' ) ,
23
23
$form : $ ( '.js-newsletter-form' ) ,
24
+ $error : $ ( '.js-newsletter-error' ) ,
24
25
submittedClass : 'is-submitted' ,
26
+ hiddenClass : 'is-hidden' ,
25
27
newsletterTextClass : 'newsletter-text' ,
26
28
newsletterTextCopy : "Thanks! You're all set to receive the latest JavaScript news."
27
29
} , options ) ;
@@ -34,18 +36,38 @@ JS.Modules.Newsletter = (function() {
34
36
// -------------------------------------
35
37
36
38
var _submitForm = function ( ) {
37
- $ . post ( '/subscribe' , _settings . $form . serialize ( ) ) ;
39
+ $ . post ( '/subscribe' , _settings . $form . serialize ( ) , function ( results ) {
40
+ if ( results . error ) {
41
+ _updateInterface ( 'error' , results . error . error ) ;
42
+ } else {
43
+ _updateInterface ( 'success' ) ;
44
+ }
45
+ } ) ;
38
46
} ;
39
47
40
48
// -------------------------------------
41
49
// Update Interface
42
50
// -------------------------------------
43
51
44
- var _updateInterface = function ( ) {
52
+ var _updateInterface = function ( type , message ) {
53
+ var newsletterTextCopy ;
54
+
55
+ if ( message !== undefined ) {
56
+ newsletterTextCopy = message ;
57
+ } else {
58
+ newsletterTextCopy = _settings . newsletterTextCopy ;
59
+ }
60
+
45
61
_settings . $form . find ( 'input' ) . prop ( 'disabled' , true ) ;
46
62
47
- _settings . $element . addClass ( _settings . submittedClass ) ;
48
- _settings . $element . append ( "<p class='" + _settings . newsletterTextClass + "'>" + _settings . newsletterTextCopy + "</p>" ) ;
63
+ if ( type === 'success' ) {
64
+ _settings . $element . addClass ( _settings . submittedClass ) ;
65
+ _settings . $element . append ( "<p class='" + _settings . newsletterTextClass + "'>" + newsletterTextCopy + "</p>" ) ;
66
+ } else {
67
+ _settings . $error
68
+ . text ( newsletterTextCopy )
69
+ . removeClass ( _settings . hiddenClass ) ;
70
+ }
49
71
} ;
50
72
51
73
// -------------------------------------
@@ -57,7 +79,6 @@ JS.Modules.Newsletter = (function() {
57
79
event . preventDefault ( ) ;
58
80
59
81
_submitForm ( ) ;
60
- _updateInterface ( ) ;
61
82
} ) ;
62
83
} ;
63
84
0 commit comments