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",
...