Regex validation of form fields


#1

Would be great to be able to specify validation rules for form fields. Right now, you can only specify that a field is required or optional. I would love to be able to put in a regex that would be used to validate what the user enters.


#2

Hello John - yes, we have been discussing a few ways we can improve the usefulness of forms through validation.

We’ll make sure this idea gets into the mix.

JM


#3

Did this ever get added?


#4

EDIT: modified to work with the unannounced change Unbounce has made to its jQuery provision that broke 139 of my forms and cost me half a day and half my hair… a little WARNING next time might be nice…

So I thought I’d share the solution I brewed up. The hard part was figuring out I had to override the submit button’s onclick function. This will run any generic validation function you write (“vForm”) and not let the form submit until it returns true:

lp.jQuery().ready(function() { 

  var id=window.module.lp.form.data.formButtonId; 

  // deletes unbounce-added submit function: 

  lp.jQuery("#"+id).unbind("click"); 

  lp.jQuery("#"+id).click(function(e) { 





e.preventDefault(); 





e.stopPropagation(); 





if (vForm()) { lp.jQuery("form").submit(); } 

  }); });

So to make sure it only allows five-digit zip codes in the “zip_code” field, for instance, your vForm() could look like this. It can validate (and update) any number of fields and return false if any fail.

function vForm() { 

  var Vzip=lp.jQuery("#zip_code").val().replace(/\D/g, "").substr(0,5); 

  if (Vzip.length != 5 || Vzip=="00000") { 





alert("5-digit numeric American ZIP code is required."); 





return false; 

  } 

  // optional, to update the field with the cleaned value: 

  lp.jQuery("#zip_code").val(Vzip); 

  return true; }

Just put both of those in one block, then add it to your form’s Scripts (that button on the toolbar) in the “Head” position.