PluginProbe ʕ •ᴥ•ʔ
Spider Elements – Premium Elementor Widgets & Addons Library / 1.1.0
Spider Elements – Premium Elementor Widgets & Addons Library v1.1.0
trunk 1.0.0 1.1.0 1.5.0 1.6.0 1.6.1 1.6.2 1.6.3 1.6.4 1.6.5 1.6.6 1.6.7 1.7.0 1.8.0 1.9.0
spider-elements / assets / js / ajax-chimp.js
spider-elements / assets / js Last commit date
admin.js 2 years ago ajax-chimp.js 2 years ago elementor-widgets.js 2 years ago scripts.js 2 years ago
ajax-chimp.js
126 lines
1 /*!
2 Mailchimp Ajax Submit
3 jQuery Plugin
4 Author: Siddharth Doshi
5 */
6 ;(function ($) {
7 'use strict';
8
9 $.ajaxChimp = {
10 responses: {
11 'You are sent to a welcome message and will be being sent our latest newsletters time to time': 0,
12 'Please enter a value': 1,
13 'An email address must contain a single @': 2,
14 'The domain portion of the email address is invalid (the portion after the @: )': 3,
15 'The username portion of the email address is invalid (the portion before the @: )': 4,
16 'This email address looks fake or invalid. Please enter a real email address': 5
17 },
18 translations: {
19 'en': null
20 },
21 init: function (selector, options) {
22 $(selector).ajaxChimp(options);
23 }
24 };
25
26 $.fn.ajaxChimp = function (options) {
27 $(this).each(function (i, elem) {
28 var form = $(elem);
29 var email = form.find('input[type=email]');
30 var label = form.find('label[for=' + email.attr('id') + ']');
31
32 var settings = $.extend({
33 'url': form.attr('action'),
34 'language': 'en'
35 }, options);
36
37 var url = settings.url.replace('/post?', '/post-json?').concat('&c=?');
38
39 form.attr('novalidate', 'true');
40 email.attr('name', 'EMAIL');
41
42 form.submit(function () {
43 var msg;
44
45 function successCallback(resp) {
46 if (resp.result === 'success') {
47 msg = 'You are sent to a welcome message and will be being sent our latest newsletters time to time.';
48 label.removeClass('error').addClass('valid');
49 email.removeClass('error').addClass('valid');
50 } else {
51 email.removeClass('valid').addClass('error');
52 label.removeClass('valid').addClass('error');
53 var index = -1;
54 try {
55 var parts = resp.msg.split(' - ', 2);
56 if (parts[1] === undefined) {
57 msg = resp.msg;
58 } else {
59 var i = parseInt(parts[0], 10);
60 if (i.toString() === parts[0]) {
61 index = parts[0];
62 msg = parts[1];
63 } else {
64 index = -1;
65 msg = resp.msg;
66 }
67 }
68 } catch (e) {
69 index = -1;
70 msg = resp.msg;
71 }
72 }
73
74 // Translate and display message
75 if (
76 settings.language !== 'en'
77 && $.ajaxChimp.responses[msg] !== undefined
78 && $.ajaxChimp.translations
79 && $.ajaxChimp.translations[settings.language]
80 && $.ajaxChimp.translations[settings.language][$.ajaxChimp.responses[msg]]
81 ) {
82 msg = $.ajaxChimp.translations[settings.language][$.ajaxChimp.responses[msg]];
83 }
84 label.html(msg);
85
86 label.show(2000);
87 if (settings.callback) {
88 settings.callback(resp);
89 }
90 }
91
92 var data = {};
93 var dataArray = form.serializeArray();
94 $.each(dataArray, function (index, item) {
95 data[item.name] = item.value;
96 });
97
98 $.ajax({
99 url: url,
100 data: data,
101 success: successCallback,
102 dataType: 'jsonp',
103 error: function (resp, text) {
104 console.log('mailchimp ajax submit error: ' + text);
105 }
106 });
107
108 // Translate and display submit message
109 var submitMsg = 'Submitting...';
110 if (
111 settings.language !== 'en'
112 && $.ajaxChimp.translations
113 && $.ajaxChimp.translations[settings.language]
114 && $.ajaxChimp.translations[settings.language]['submit']
115 ) {
116 submitMsg = $.ajaxChimp.translations[settings.language]['submit'];
117 }
118 label.html(submitMsg).show(2000);
119
120 return false;
121 });
122 });
123 return this;
124 };
125 })(jQuery);
126