Skip to content

Instantly share code, notes, and snippets.

@kimchaily
Last active February 18, 2016 09:48
Show Gist options
  • Save kimchaily/ad43a889179faf210f44 to your computer and use it in GitHub Desktop.
Save kimchaily/ad43a889179faf210f44 to your computer and use it in GitHub Desktop.
JS Form Validation Polyfill with modernizr
/*! modernizr 3.3.1 (Custom Build) | MIT *
* http://modernizr.com/download/?-formvalidation-setclasses !*/
!function(e,n,t){function o(e,n){return typeof e===n}function a(){var e,n,t,a,i,s,r;for(var l in f)if(f.hasOwnProperty(l)){if(e=[],n=f[l],n.name&&(e.push(n.name.toLowerCase()),n.options&&n.options.aliases&&n.options.aliases.length))for(t=0;t<n.options.aliases.length;t++)e.push(n.options.aliases[t].toLowerCase());for(a=o(n.fn,"function")?n.fn():n.fn,i=0;i<e.length;i++)s=e[i],r=s.split("."),1===r.length?Modernizr[r[0]]=a:(!Modernizr[r[0]]||Modernizr[r[0]]instanceof Boolean||(Modernizr[r[0]]=new Boolean(Modernizr[r[0]])),Modernizr[r[0]][r[1]]=a),d.push((a?"":"no-")+r.join("-"))}}function i(e){var n=u.className,t=Modernizr._config.classPrefix||"";if(c&&(n=n.baseVal),Modernizr._config.enableJSClass){var o=new RegExp("(^|\\s)"+t+"no-js(\\s|$)");n=n.replace(o,"$1"+t+"js$2")}Modernizr._config.enableClasses&&(n+=" "+t+e.join(" "+t),c?u.className.baseVal=n:u.className=n)}function s(){return"function"!=typeof n.createElement?n.createElement(arguments[0]):c?n.createElementNS.call(n,"http://www.w3.org/2000/svg",arguments[0]):n.createElement.apply(n,arguments)}function r(){var e=n.body;return e||(e=s(c?"svg":"body"),e.fake=!0),e}function l(e,t,o,a){var i,l,d,f,p="modernizr",c=s("div"),m=r();if(parseInt(o,10))for(;o--;)d=s("div"),d.id=a?a[o]:p+(o+1),c.appendChild(d);return i=s("style"),i.type="text/css",i.id="s"+p,(m.fake?m:c).appendChild(i),m.appendChild(c),i.styleSheet?i.styleSheet.cssText=e:i.appendChild(n.createTextNode(e)),c.id=p,m.fake&&(m.style.background="",m.style.overflow="hidden",f=u.style.overflow,u.style.overflow="hidden",u.appendChild(m)),l=t(c,e),m.fake?(m.parentNode.removeChild(m),u.style.overflow=f,u.offsetHeight):c.parentNode.removeChild(c),!!l}var d=[],f=[],p={_version:"3.3.1",_config:{classPrefix:"",enableClasses:!0,enableJSClass:!0,usePrefixes:!0},_q:[],on:function(e,n){var t=this;setTimeout(function(){n(t[e])},0)},addTest:function(e,n,t){f.push({name:e,fn:n,options:t})},addAsyncTest:function(e){f.push({name:null,fn:e})}},Modernizr=function(){};Modernizr.prototype=p,Modernizr=new Modernizr;var u=n.documentElement,c="svg"===u.nodeName.toLowerCase(),m=p.testStyles=l;Modernizr.addTest("formvalidation",function(){var n=s("form");if(!("checkValidity"in n&&"addEventListener"in n))return!1;if("reportValidity"in n)return!0;var t,o=!1;return Modernizr.formvalidationapi=!0,n.addEventListener("submit",function(n){(!e.opera||e.operamini)&&n.preventDefault(),n.stopPropagation()},!1),n.innerHTML='<input name="modTest" required="required" /><button></button>',m("#modernizr form{position:absolute;top:-99999em}",function(e){e.appendChild(n),t=n.getElementsByTagName("input")[0],t.addEventListener("invalid",function(e){o=!0,e.preventDefault(),e.stopPropagation()},!1),Modernizr.formvalidationmessage=!!t.validationMessage,n.getElementsByTagName("button")[0].click()}),o}),a(),i(d),delete p.addTest,delete p.addAsyncTest;for(var v=0;v<Modernizr._q.length;v++)Modernizr._q[v]();e.Modernizr=Modernizr}(window,document);
/**
* Custom Form Validation Polyfill using Modernizr
**/
if (Modernizr.formvalidation) {
// supported
} else {
// not-supported
$(document).ready(function() {
$('form').on('submit', function(event) {
event.preventDefault();
var $form = $(this);
var $required = $form.find('[required]');
$required.each(function() {
var $field = $(this);
var val = $field.val();
if ($field.attr('type') == 'checkbox') {
if (!$field.prop('checked')) {
alert('Bitte Annulationsbedingungen akzeptieren.');
return false;
} else {
return true;
}
}
if ($field.attr('type') == 'email') {
if (val.indexOf('@') == -1 || val.indexOf('.') == -1) {
alert('Bitte gültige E-Mail-Adresse angeben.');
return false;
} else {
return true;
}
}
if (val === '' || val === null) {
alert('Bitte alle erforderlichen Felder ausfüllen.');
return false;
}
});
});
});
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment