Advertisement
Guest User

Untitled

a guest
Feb 21st, 2017
58
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.54 KB | None | 0 0
  1. var SUCCESS_MESSAGES = {
  2. 'en': {
  3. 'complete the subscription': 'Confirm the subscription in your inbox',
  4. 'default': 'Confirm the subscription in your inbox'
  5. },
  6. 'de': {
  7. 'complete the subscription': 'Bestätigen Sie das Abonnement in Ihrer Inbox',
  8. 'default': 'Bestätigen Sie das Abonnement in Ihrer Inbox'
  9. }
  10. }
  11.  
  12. var ERROR_MESSAGES = {
  13. 'en': {
  14. 'contain a single': 'Your email must contain an @',
  15. 'enter a value': 'Your email can\'t be blank',
  16. 'the portion after': 'Your email looks incorrect',
  17. 'the portion before': 'Your email looks incorrect',
  18. 'looks fake or invalid': 'Your email looks incorrect',
  19. 'already subscribed': 'Your email is already subscribed',
  20. 'default': 'Your subscription didn\'t go through. Try again.'
  21. },
  22. 'de': {
  23. 'contain a single': 'Ihre E-Mail muss eine @',
  24. 'enter a value': 'Ihre E-Mail kann nicht leer sein',
  25. 'the portion after': 'Ihre E-Mail-Adresse ist falsch',
  26. 'the portion before': 'Ihre E-Mail-Adresse ist falsch',
  27. 'looks fake or invalid': 'Ihre E-Mail-Adresse ist falsch',
  28. 'already subscribed': 'Ihre E-Mail ist schon abonniert',
  29. 'default': 'Ihr Abonnement ging nicht durch. Versuch es noch einmal.'
  30. }
  31. };
  32.  
  33. function getMessage(target, where) {
  34. for (var piece in where) {
  35. if(target.indexOf(piece) >= 0) {
  36. return where[piece];
  37. }
  38. }
  39.  
  40. return where['default'];
  41. }
  42.  
  43. // return an appropriate success message
  44. function getSuccessMessage(message, lang) {
  45. return getMessage(message, SUCCESS_MESSAGES[lang]);
  46. }
  47.  
  48. // return an appropriate error message
  49. function getErrorMessage(message, lang) {
  50. return getMessage(message, ERROR_MESSAGES[lang]);
  51. }
  52.  
  53. function handleSubmitSuccess($form, data, message, xhr) {
  54. var $message = $form.find('.message');
  55. var $input = $form.find('input[type="email"]');
  56. var lang = $form.hasClass('de') ? 'de' : 'en';
  57.  
  58. if(data.result === 'error') {
  59. $form.addClass('error');
  60. $message.text(getErrorMessage(data.msg, lang));
  61. $input.focus();
  62. return;
  63. }
  64.  
  65. $form.addClass('ok');
  66. $message.text(getSuccessMessage(data.msg, lang));
  67. $input.blur();
  68. $form.focus();
  69. }
  70.  
  71. function handleSubmitError($form) {
  72. var $message = $form.find('.message');
  73. var $input = $form.find('input[type="email"]');
  74. var lang = $form.hasClass('de') ? 'de' : 'en';
  75.  
  76. console.error('Submit error', arguments)
  77.  
  78. $form.addClass('error');
  79. $message.text(getErrorMessage('default', lang));
  80. $input.focus();
  81. }
  82.  
  83. function handleSubmitTeardown($form) {
  84. var $submit = $form.find('input[type="submit"]');
  85. $submit.prop('disabled', false);
  86. }
  87.  
  88. function handleSubmit(event) {
  89. var $form = $(event.target).closest('form');
  90. var $submit = $form.find('input[type="submit"]');
  91. var $input = $form.find('input[type="email"]');
  92. var url = $form.attr('action');
  93. var requestData = {};
  94.  
  95. event.preventDefault();
  96.  
  97. $.each($form.serializeArray(), function (index, item) {
  98. requestData[item.name] = item.value;
  99. });
  100.  
  101. $submit.prop('disabled', true);
  102. $form.removeClass('ok error');
  103.  
  104. $.ajax({
  105. url: url,
  106. data: requestData,
  107. dataType: 'jsonp'
  108. })
  109. .done($.proxy(handleSubmitSuccess, this, $form))
  110. .fail($.proxy(handleSubmitError, this, $form))
  111. .always($.proxy(handleSubmitTeardown, this, $form));
  112. $input.focus();
  113. }
  114.  
  115. function handleFocus(event) {
  116. var $target = $(event.target);
  117. var $form = $target.closest('form');
  118.  
  119. if($form.hasClass('ok')) {
  120. $form.removeClass('ok');
  121. }
  122. }
  123.  
  124. function init() {
  125. var $form = $('.newsletter form');
  126. var $input = $('.newsletter input[type="email"]');
  127.  
  128. $form.on('submit', handleSubmit);
  129. $input.on('focus', handleFocus);
  130. }
  131.  
  132. $(init);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement