MktoForms2 :: Force known TLD

by sanford

HTML

<script src="//app-sj01.marketo.com/js/forms2/js/forms2.min.js"></script>
<form id="mktoForm_169"></form>
<script>MktoForms2.loadForm("//app-sj01.marketo.com", "410-XOR-673", 169,
function(form) 
{
    
    var emailExtendedValidationError = 'Doesn\'t sound like a real TLD!',
        emailField = 'Email',
        emailFieldSelector = '#'+emailField;

    form.onValidate(function(valid) 
    {
    
        var validTLDsRE = new RegExp('\\.('
            + validTLDs.join('|')
            + ')$','i');

        if ( validTLDsRE.test(form.vals()[emailField]) ) {
            form.submittable(false); // good, but block the form submit anyway on demo site
        } else {
            form.showErrorMessage(emailExtendedValidationError, form.getFormElem().find(emailFieldSelector));
            form.submittable(false);
        }

    });

    // from http://data.iana.org/TLD/tlds-alpha-by-domain.txt
    // # Version 2015072000, Last Updated Mon Jul 20 07:07:01 2015 UTC
    var validTLDs = 
    [
        "abb",
        "abbott",
        "abogado",
        "ac",
        "academy",
        "accenture",
        "accountant",
        "accountants",
        "active",
        "actor",
        "ad",
        "ads",
        "adult",
        "ae",
        "aeg",
        "aero",
        "af",
        "afl",
        "ag",
        "agency",
        "ai",
        "aig",
        "airforce",
        "airtel",
        "al",
        "allfinanz",
        "alsace",
        "am",
        "amsterdam",
        "an",
        "android",
        "ao",
        "apartments",
        "app",
        "aq",
        "aquarelle",
        "ar",
        "archi",
        "army",
        "arpa",
        "as",
        "asia",
        "associates",
        "at",
        "attorney",
        "au",
        "auction",
        "audio",
        "auto",
        "autos",
        "aw",
        "ax",
        "axa",
        "az",
        "azure",
        "ba",
        "band",
        "bank",
        "bar",
       ...