Skip to content

Instantly share code, notes, and snippets.

@sruli
Last active December 11, 2015 03:39
Show Gist options
  • Save sruli/4539799 to your computer and use it in GitHub Desktop.
Save sruli/4539799 to your computer and use it in GitHub Desktop.
<form action="http://newsletter.arrondean.com/signups/subscribe/70507" method="post" id="mad_mimi_signup_form" target="_blank">
<fieldset>
<div class="mimi_field text email required">
<label for="signup_email">Email</label>
<input id="signup_email" name="signup[email]" type="text" placeholder="you@example.com" class="required">
<div class="mimi_field_feedback"></div><span class="mimi_funk"></span>
</div>
<div class="mimi_field text">
<label for="signup_name" id="wf_label">Name</label>
<input id="signup_name" name="signup[name]" type="text">
<div class="mimi_field_feedback"></div><span class="mimi_funk"></span>
</div>
<div>
<label>PA North Pittsburgh:</label>
<select name='lists[]'>
<option value=''>Please select...</option>
<option value='646163'>Dino's Diner</option>
<option value='646164'>Pauls Power Tools</option>
<option value='646162'>Sandy's Sweat Shop</option>
<option value='646161'>Pizza Joes</option>
</select>
</div>
<div>
<label>OH Mahoning County:</label>
<select name='lists[]'>
<option value=''>Please select...</option>
<option value='646200'>TGI Fridays</option>
<option value='646197'>Tin's Tanning</option>
<option value='646196'>Obama's Firearms and More</option>
<option value='646195'>Sports Fanatics</option>
<option value='646198'>Subway</option>
</select>
</div>
<!--<div class="check">
<input id="list_646160" name="lists[]" value="646160" type="checkbox" checked="checked">
<label for="list_646160">PA North Pittsburgh</label>
<span class="mimi_field_feedback"></span><span class="mimi_funk"></span>
</div>
<div class="check">
<input id="list_646194" name="lists[]" value="646194" type="checkbox" checked="checked">
<label for="list_646194">OH Mahoning County</label>
<span class="mimi_field_feedback"></span><span class="mimi_funk"></span>
</div>-->
<div class="mimi_field action">
<input id="webform_submit_button" value="Sign up!" type="submit" class="submit" data-default-text="Sign up!" data-submitting-text="Sending…" data-invalid-text="↑ You forgot some required fields">
</div>
</fieldset>
</form>
<script type="text/javascript">
(function() {
var form = document.getElementById("mad_mimi_signup_form"),
submit = document.getElementById("webform_submit_button"),
email = /.+@.+\..+/;
form.onsubmit = function(event) {
var isValid = validate();
if(!isValid) {
for(var i = 0; i < form.elements.length; ++i) {
var input = form.elements;
if(input.className.indexOf("required") >= 0) {
input.onchange = validate;
}
}
return false;
}
if(form.getAttribute("target") != "_blank") {
form.className = "mimi_submitting";
submit.value = submit.getAttribute("data-submitting-text");
submit.disabled = true;
submit.className = "disabled";
}
setTimeout(function() {
for(var i = 0; i < form.getElementsByTagName("input").length; ++i) {
var input = form.getElementsByTagName("input");
if(input.getAttribute("type") == "text") {
input.value = "";
}
if(input.id == "signup_email") {
input.placeholder = "you@example.com";
} else {
input.placeholder = "";
}
}
}, 3000);
};
function validate() {
var isValid = true;
for(var i = 0; i < form.elements.length; ++i) {
var input = form.elements,
allDivs = input.parentNode.getElementsByTagName("div");
if(input.className.indexOf("required") >= 0) {
if(input.id == "signup_email") {
if(!email.test(input.value)) {
emailErrorMessage(input, allDivs);
isValid = false;
} else {
removeErrorMessage(input, allDivs);
}
} else {
if((input.type == "checkbox" && !input.checked) || input.value == "" || input.value == "-1") {
fieldErrorMessage(input, allDivs);
isValid = false;
} else {
removeErrorMessage(input, allDivs);
}
}
}
}
form.className = isValid ? "" : "mimi_invalid";
submit.value = isValid ? submit.getAttribute("data-default-text") : submit.getAttribute("data-invalid-text");
submit.disabled = !isValid;
submit.className = isValid ? "submit" : "disabled";
return isValid;
}
function emailErrorMessage(input, allDivs) {
if(input.getAttribute("data-webform-type") == "iframe") {
input.className = "required invalid";
input.placeholder = input.getAttribute("data-required-message") || "This field is required";
} else {
allDivs[0].innerHTML = input.getAttribute("data-invalid-message") || "This field is invalid";
}
}
function fieldErrorMessage(input, allDivs) {
if(input.getAttribute("data-webform-type") == "iframe") {
input.className = "required invalid";
input.placeholder = input.getAttribute("data-required-message") || "This field is required";
} else {
for(var i = 0; i < allDivs.length; ++i) {
var element = allDivs;
if(element.className.indexOf("mimi_field_feedback") >= 0) {
return element.innerHTML = input.getAttribute("data-required-message") || "This field is required";
}
}
}
}
function removeErrorMessage(input, allDivs) {
if(input.getAttribute("data-webform-type") == "iframe") {
input.className = "required";
}
for(var i = 0; i < allDivs.length; ++i) {
var element = allDivs;
if(element.className.indexOf("mimi_field_feedback") >= 0) {
return element.innerHTML = "";
}
}
}
})();
</script>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment