Restrict Free Email for Form Submission | Community
Skip to main content
Emma_Wu1
New Participant
January 23, 2017
Solved

Restrict Free Email for Form Submission

  • January 23, 2017
  • 1 reply
  • 8375 views

Hi, I have found the javascript provided on the Marketo Developer documentation about restricting free email(like gmail.com, yahoo.com etc.) upon form submission. However, when I inserted the script before the end of head card, and tested the form, it didn't work as it should.

Can someone let me know where I did wrong, the place I inserted the code, or I need to clear up the form CSS custom code?(which I did, but still didn't work) or something else?

Thank you!

Here's the script:

<script>
(function (){
  // Please include the email domains you would like to block in this list
  var invalidDomains = ["@gmail.","@yahoo.","@hotmail.","@live.","@aol.","@outlook."];
  MktoForms2.whenReady(function (form){
   form.onValidate(function(){
   var email = form.vals().Email;
   if(email){
   if(!isEmailGood(email)) {
   form.submitable(false);
   var emailElem = form.getFormElem().find("#Email");
   form.showErrorMessage("Must be Business email.", emailElem);
  }else{
   form.submitable(true);
  }
  }
  });
  });
 
  function isEmailGood(email) {
   for(var i=0; i < invalidDomains.length; i++) {
   var domain = invalidDomains[i];
   if (email.indexOf(domain) != -1) {
   return false;
  }
  }
   return true;
  }
})();
</script>

Here's the source I get the code from:

http://developers.marketo.com/blog/restrict-free-email-domains-on-form-fill-out/

Here's the test landing page and form:

get.evault.com/Testing-Business-Email-Error-Msg_ttest.html

Appreciated any feedback!

Best answer by SanfordWhiteman

If you look in your browser console you'll see the error: you're trying to call MktoForms2.whenReady before the forms library (forms2.min.js) is loaded.

On Marketo LPs, the library can be loaded square in the middle of the page. So you can't put your code in <head> as you've done here (nor can you put it high up in <body>) or it won't have enough to work with.

Instead, move your <script> block down to right before the closing </body> tag.

1 reply

SanfordWhiteman
SanfordWhitemanAccepted solution
New Participant
January 23, 2017

If you look in your browser console you'll see the error: you're trying to call MktoForms2.whenReady before the forms library (forms2.min.js) is loaded.

On Marketo LPs, the library can be loaded square in the middle of the page. So you can't put your code in <head> as you've done here (nor can you put it high up in <body>) or it won't have enough to work with.

Instead, move your <script> block down to right before the closing </body> tag.

Emma_Wu1
Emma_Wu1Author
New Participant
January 23, 2017

Thank you Sanford!

One another quick question, should I clear up all the Custom CSS code from the form customize wizard in order to make this script working?(we have some previous script written in there to prevent free email on form submission)

Thanks!

Emma

SanfordWhiteman
New Participant
January 23, 2017

Well, CSS isn't having a direct impact here. Certainly, other JavaScript could have a fatal impact.