Skip to content

Commit 5d8c3c2

Browse files
committed
Add error output for newsletter forms
1 parent 8a3843f commit 5d8c3c2

File tree

3 files changed

+31
-7
lines changed

3 files changed

+31
-7
lines changed

client/javascripts/components/modules/newsletter.js

Lines changed: 26 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,9 @@ JS.Modules.Newsletter = (function() {
2121
_settings = $.extend({
2222
$element : $('.js-newsletter'),
2323
$form : $('.js-newsletter-form'),
24+
$error : $('.js-newsletter-error'),
2425
submittedClass : 'is-submitted',
26+
hiddenClass : 'is-hidden',
2527
newsletterTextClass : 'newsletter-text',
2628
newsletterTextCopy : "Thanks! You're all set to receive the latest JavaScript news."
2729
}, options);
@@ -34,18 +36,38 @@ JS.Modules.Newsletter = (function() {
3436
// -------------------------------------
3537

3638
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+
});
3846
};
3947

4048
// -------------------------------------
4149
// Update Interface
4250
// -------------------------------------
4351

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+
4561
_settings.$form.find('input').prop('disabled', true);
4662

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+
}
4971
};
5072

5173
// -------------------------------------
@@ -57,7 +79,6 @@ JS.Modules.Newsletter = (function() {
5779
event.preventDefault();
5880

5981
_submitForm();
60-
_updateInterface();
6182
});
6283
};
6384

server/views/news/index.jade

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -111,8 +111,10 @@ block content
111111
p.tcs.tss Subscribe now to the weekly 5 Minutes of JavaScript newsletter.
112112

113113
.newsletter.js-newsletter
114-
form.form.form--inline.newsletter-form.tar.js-newsletter-form
114+
form.form.form--inline.newsletter-form.js-newsletter-form
115115
fieldset.form-field.mbs
116116
input.form-input(type='email' name='email' placeholder='Email Address' required)
117+
p.mbf.mts.tce.tsxs.is-hidden.js-newsletter-error
117118

118-
input.btn.btn--b.btn--block.btn--m--inline.form-btn(type='submit' value='Subscribe')
119+
.tar
120+
input.btn.btn--b.btn--block.btn--m--inline.form-btn(type='submit' value='Subscribe')

server/views/partials/_newsletter_form.jade

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
.g-b.g-b--s--3of5
66

77
input.form-input.form-input--inline.mbs.mbf--m(type='email' name='email' placeholder='Email Address' required)
8+
p.mbf.mts.tce.tsxs.is-hidden.js-newsletter-error
89

910
.g-b.g-b--s--2of5
1011

0 commit comments

Comments
 (0)