From 2963bd06b190c076d36cd6bc510ef46e2644826e Mon Sep 17 00:00:00 2001 From: Miroslav Hibler Date: Thu, 3 Jul 2014 15:01:45 +0200 Subject: [PATCH] Fix for #4 - subscribeGo failing when return key pressed --- README.md | 3 +++ lib/client/views/subscribe/subscribe.js | 32 ++++++++++++++++--------- smart.json | 2 +- 3 files changed, 25 insertions(+), 12 deletions(-) diff --git a/README.md b/README.md index 6a926f4..f7dd88d 100644 --- a/README.md +++ b/README.md @@ -107,6 +107,9 @@ api.call( 'campaigns', 'template-content', { cid: '/* CAMPAIGN ID */' }, functio ## Changelog +### v0.3.0 + * Enable submit with return key + ### v0.2.0 * On client, MailChimp.call() now reads API Key from session variable 'MailChimpOptions.apiKey' as well diff --git a/lib/client/views/subscribe/subscribe.js b/lib/client/views/subscribe/subscribe.js index 6b62ad8..342f869 100644 --- a/lib/client/views/subscribe/subscribe.js +++ b/lib/client/views/subscribe/subscribe.js @@ -1,20 +1,23 @@ var subscribeTitle, subscribeEmail, subscribeButton, - subscribeMessage = 'Get on the mailing list:', - subscribeInvalidEmail = 'Invalid email address :(', - subscribeSubscribing = 'Subscribing...', - subscribeSuccess = 'Check your inbox! :)', + subscribeMessage = 'Get on the mailing list:', + subscribeInvalidEmail = 'Invalid email address :(', + subscribeSubscribing = 'Subscribing...', + subscribeSuccess = 'Check your inbox! :)', + showMessage = function ( message ) { if ( subscribeTitle ) { subscribeTitle.innerHTML = message; } }, + isValidEmailAddress = function ( emailAddress ) { // http://stackoverflow.com/a/46181/11236 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( emailAddress ); }, + validateEmailAddress = function ( updateMessage ) { if ( subscribeEmail.value !== '' && isValidEmailAddress( subscribeEmail.value ) ) { subscribeButton.disabled = false; @@ -30,6 +33,7 @@ var subscribeTitle, } } }, + mailChimpListSubscribe = function ( email, list_id ) { var mailChimp = new MailChimp(/* apiKey, options */); @@ -40,6 +44,7 @@ var subscribeTitle, email: email } }, + function ( error, result ) { if ( error ) { switch ( error.error ) { @@ -60,14 +65,16 @@ var subscribeTitle, console.log( JSON.stringify( result ) ); showMessage( subscribeSuccess ); } + subscribeEmail.disabled = false; validateEmailAddress( false ); } ); }, + subscribeGo = function ( eventBubbling ) { - subscribeEmail.disabled = true; - subscribeButton.disabled = true; + subscribeEmail.disabled = true; + subscribeButton.disabled = true; showMessage( subscribeSubscribing ); mailChimpListSubscribe( subscribeEmail.value ); // Prevent Event Bubbling @@ -75,9 +82,9 @@ var subscribeTitle, }; Template.MailChimpListSubscribe.rendered = function () { - subscribeTitle = this.find( '.message' ); - subscribeEmail = this.find( '.email' ); - subscribeButton = this.find( '.subscribe' ); + subscribeTitle = this.find( '.message' ); + subscribeEmail = this.find( '.email' ); + subscribeButton = this.find( '.subscribe' ); subscribeButton.disabled = ( subscribeEmail.value === '' ); }; @@ -93,18 +100,20 @@ Template.MailChimpListSubscribe.events({ validateEmailAddress( true ); }, 0); }, + 'keyup .email': function ( e ) { var key = e.which || e.keyCode || e.charCode; if ( key === 8 || // [Backspace] key === 46 ) { // [Delete] - setTimeout(function( key ) { + setTimeout(function() { validateEmailAddress( true ); }, 0); } }, + 'keypress .email': function ( e ) { var key = e.which || e.keyCode || e.charCode; - setTimeout(function( key ) { + setTimeout(function() { validateEmailAddress( true ); if ( isValidEmailAddress( subscribeEmail.value ) ) { if ( key === 13 ) { // [Return] @@ -113,6 +122,7 @@ Template.MailChimpListSubscribe.events({ } }, 0); }, + 'click .subscribe': function ( e ) { validateEmailAddress( true ); if ( isValidEmailAddress( subscribeEmail.value ) ) { diff --git a/smart.json b/smart.json index ac9d69d..0c46afe 100644 --- a/smart.json +++ b/smart.json @@ -3,7 +3,7 @@ "description" : "A Meteor wrapper for the MailChimp API", "homepage" : "https://github.com/MiroHibler/meteor-mailchimp", "author" : "Miroslav Hibler (http://miro.hibler.me)", - "version" : "0.2.0", + "version" : "0.3.0", "git" : "https://github.com/MiroHibler/meteor-mailchimp.git", "packages" : {} } \ No newline at end of file