An error has occurred
{{terminalError}}
Get Expert Insights on the Consumer Tech Landscape from Dwight Silverman Try first three-weeks for free and continue for $10 per month thereafter. No credit card required today.

You may opt out any time. and
You're signed up for a free trial to Release Notes by  Dwight Silverman ! Check your inbox for an email from the editor and a link to manage your email preferences.
const emitShowEvent = () => { setTimeout(() => { var trackingShow = document.querySelector('#tracking-show'); trackingShow.click(); }, 500); } if(document.readyState === "complete" || document.readyState === "loaded" || document.readyState === "interactive" ) { emitShowEvent(); } else { document.addEventListener('DOMContentLoaded', emitShowEvent); } const emailInput = document.querySelector('.pn-modal__input'); const emailRegExp = /^(([^<>()\[\]\\.,;:\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,}))$/; const errorMessage = document.querySelector('.pn-modal__error-message'); const submitButton = document.querySelector('.pn-modal__button') let successScreen = document.getElementById('successScreen'); let initialScreen = document.getElementById('initialScreen'); submitButton.disabled = true; /** @function showErrorMessage * @param {boolean} isErrorMessageShowing * @param {string} message */ const showErrorMessage = (isErrorMessageShowing, message) => { submitButton.disabled = !!isErrorMessageShowing; errorMessage.innerText = message; } /* EventListener that removes the error message and disables the submit button when the input field is not on focus. */ emailInput.addEventListener('blur', () => { if (emailInput.value === '') { showErrorMessage(false, ''); } }); /* EventListener to enable / disable error the message notification based on users input */ emailInput.addEventListener('input', () => { if (emailRegExp.test(emailInput.value)) { showErrorMessage(false, ''); } else if (emailInput.value === '') { showErrorMessage(true, 'Please enter your email'); } else { showErrorMessage(true, 'Please enter a valid email'); } }) /* SubmitButton Event Listener */ submitButton.addEventListener('click', () => { if (emailRegExp.test(emailInput.value)) { successScreen.style.display = 'flex'; initialScreen.style.display = 'none'; } });