1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071 |
- define(['jquery', 'domReady!'], function ($) {
- 'use strict';
- /**
- * Email validation
- * @param {String} sEmail
- * @returns {Boolean}
- */
- function validateEmail(sEmail) {
- var filter
- = /^([+\w-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([\w-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$/;
- return filter.test(sEmail);
- }
- /**
- * Email capture for checkout
- * @param {String} url
- *
- */
- function emailCaptureCheckout(url) {
- var previousEmail = '';
- $('body').on('blur', 'input[id=customer-email]', function () {
- var email = $(this).val();
- if (email === previousEmail) {
- return false;
- }
- if (email && validateEmail(email)) {
- previousEmail = email;
- $.post(url, {
- email: email
- });
- }
- });
- }
- /**
- * Email capture for newsletter field
- * @param {String} url
- */
- function emailCaptureNewsletter(url) {
- $('input[id=newsletter]').each(function (index, element) {
- // Observe onblur event on element
- $(element).on('blur', function () {
- var email = $(element).val();
- if (email && validateEmail(email)) {
- $.post(url, {
- email: email
- });
- }
- });
- });
- }
- /**
- * Exported/return email capture
- * @param {Object} emailCapture
- */
- return function (emailCapture) {
- if (emailCapture.type === 'checkout') {
- emailCaptureCheckout(emailCapture.url);
- }
- if (emailCapture.type === 'newsletter') {
- emailCaptureNewsletter(emailCapture.url);
- }
- };
- });
|