-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathNativeValidationShim.min.js
More file actions
16 lines (16 loc) · 12.3 KB
/
NativeValidationShim.min.js
File metadata and controls
16 lines (16 loc) · 12.3 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
/*
* Copyright 2012 Information Control Corporation
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
(function(l,d){var k={};k.version="0.9";k.settings={messages:{color:"The value must be a valid hexadecimal color code",date:"Invalid date format",datetime:"Invalid date time format",email:"The value must be a valid email address",emailMulti:"The value must be a list of one or more valid email addresses",maximum:"The value is too high",month:"Must be a valid month",minimum:"The value is too low",numeric:"The input must be a number",pattern:"Invalid input",required:"This is a required field",step:"The value is not a valid step",time:"Invalid time format",url:"Must be a valid url",week:"Must be a valid week"},regex:{color:/^#([a-f0-9]{3}|[a-f0-9]{6})$/i,date:/^[0-9]{4}-(0[1-9]|1[0-2])-(([0-2][0-9])|(3[0-1]))$/,datetime:/^[0-9]{4}-(0[1-9]|1[0-2])-(([0-2][0-9])|(3[0-1]))T[0-2][0-9]:[0-5][0-9]:[0-5][0-9](\.[0-9])?(Z|([+-][0-2][0-9]:[0-5][0-9]))$/,datetimelocal:/^[0-9]{4}-(0[1-9]|1[0-2])-(([0-2][0-9])|(3[0-1]))T[0-2][0-9]:[0-5][0-9]:[0-5][0-9](\.[0-9])?$/,email:/^[a-zA-Z0-9.!#$%&'*+/=?\^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$/,emailMulti:/^(([a-zA-Z0-9.!#$%&'*+/=?\^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*), )*[a-zA-Z0-9.!#$%&'*+/=?\^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$/,month:/^[0-9]{4}-(0[1-9]|1[0-2])$/,numeric:/^([-]?[0-9]+(\.?[0-9]*)?([eE]?[\+-]?[0-9]*)?)$/,time:/^[0-2][0-9]:[0-5][0-9]:[0-5][0-9](\.[0-9])?$/,url:/^\s*[a-z](?:[-a-z0-9\+\.])*:(?:\/\/(?:(?:%[0-9a-f][0-9a-f]|[-a-z0-9\._~\uA0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF\u10000-\u1FFFD\u20000-\u2FFFD\u30000-\u3FFFD\u40000-\u4FFFD\u50000-\u5FFFD\u60000-\u6FFFD\u70000-\u7FFFD\u80000-\u8FFFD\u90000-\u9FFFD\uA0000-\uAFFFD\uB0000-\uBFFFD\uC0000-\uCFFFD\uD0000-\uDFFFD\uE1000-\uEFFFD!\$&\'\(\)\*\+,;=:])*@)?(?:\[(?:(?:(?:[0-9a-f]{1,4}:){6}(?:[0-9a-f]{1,4}:[0-9a-f]{1,4}|(?:[0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(?:\.(?:[0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])){3})|::(?:[0-9a-f]{1,4}:){5}(?:[0-9a-f]{1,4}:[0-9a-f]{1,4}|(?:[0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(?:\.(?:[0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])){3})|(?:[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){4}(?:[0-9a-f]{1,4}:[0-9a-f]{1,4}|(?:[0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(?:\.(?:[0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])){3})|(?:[0-9a-f]{1,4}:[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){3}(?:[0-9a-f]{1,4}:[0-9a-f]{1,4}|(?:[0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(?:\.(?:[0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])){3})|(?:(?:[0-9a-f]{1,4}:){0,2}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){2}(?:[0-9a-f]{1,4}:[0-9a-f]{1,4}|(?:[0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(?:\.(?:[0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])){3})|(?:(?:[0-9a-f]{1,4}:){0,3}[0-9a-f]{1,4})?::[0-9a-f]{1,4}:(?:[0-9a-f]{1,4}:[0-9a-f]{1,4}|(?:[0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(?:\.(?:[0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])){3})|(?:(?:[0-9a-f]{1,4}:){0,4}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:[0-9a-f]{1,4}|(?:[0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(?:\.(?:[0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])){3})|(?:(?:[0-9a-f]{1,4}:){0,5}[0-9a-f]{1,4})?::[0-9a-f]{1,4}|(?:(?:[0-9a-f]{1,4}:){0,6}[0-9a-f]{1,4})?::)|v[0-9a-f]+[-a-z0-9\._~!\$&\'\(\)\*\+,;=:]+)\]|(?:[0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(?:\.(?:[0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])){3}|(?:%[0-9a-f][0-9a-f]|[-a-z0-9\._~\uA0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF\u10000-\u1FFFD\u20000-\u2FFFD\u30000-\u3FFFD\u40000-\u4FFFD\u50000-\u5FFFD\u60000-\u6FFFD\u70000-\u7FFFD\u80000-\u8FFFD\u90000-\u9FFFD\uA0000-\uAFFFD\uB0000-\uBFFFD\uC0000-\uCFFFD\uD0000-\uDFFFD\uE1000-\uEFFFD!\$&\'\(\)\*\+,;=@])*)(?::[0-9]*)?(?:\/(?:(?:%[0-9a-f][0-9a-f]|[-a-z0-9\._~\uA0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF\u10000-\u1FFFD\u20000-\u2FFFD\u30000-\u3FFFD\u40000-\u4FFFD\u50000-\u5FFFD\u60000-\u6FFFD\u70000-\u7FFFD\u80000-\u8FFFD\u90000-\u9FFFD\uA0000-\uAFFFD\uB0000-\uBFFFD\uC0000-\uCFFFD\uD0000-\uDFFFD\uE1000-\uEFFFD!\$&\'\(\)\*\+,;=:@]))*)*|\/(?:(?:(?:(?:%[0-9a-f][0-9a-f]|[-a-z0-9\._~\uA0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF\u10000-\u1FFFD\u20000-\u2FFFD\u30000-\u3FFFD\u40000-\u4FFFD\u50000-\u5FFFD\u60000-\u6FFFD\u70000-\u7FFFD\u80000-\u8FFFD\u90000-\u9FFFD\uA0000-\uAFFFD\uB0000-\uBFFFD\uC0000-\uCFFFD\uD0000-\uDFFFD\uE1000-\uEFFFD!\$&\'\(\)\*\+,;=:@]))+)(?:\/(?:(?:%[0-9a-f][0-9a-f]|[-a-z0-9\._~\uA0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF\u10000-\u1FFFD\u20000-\u2FFFD\u30000-\u3FFFD\u40000-\u4FFFD\u50000-\u5FFFD\u60000-\u6FFFD\u70000-\u7FFFD\u80000-\u8FFFD\u90000-\u9FFFD\uA0000-\uAFFFD\uB0000-\uBFFFD\uC0000-\uCFFFD\uD0000-\uDFFFD\uE1000-\uEFFFD!\$&\'\(\)\*\+,;=:@]))*)*)?|(?:(?:(?:%[0-9a-f][0-9a-f]|[-a-z0-9\._~\uA0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF\u10000-\u1FFFD\u20000-\u2FFFD\u30000-\u3FFFD\u40000-\u4FFFD\u50000-\u5FFFD\u60000-\u6FFFD\u70000-\u7FFFD\u80000-\u8FFFD\u90000-\u9FFFD\uA0000-\uAFFFD\uB0000-\uBFFFD\uC0000-\uCFFFD\uD0000-\uDFFFD\uE1000-\uEFFFD!\$&\'\(\)\*\+,;=:@]))+)(?:\/(?:(?:%[0-9a-f][0-9a-f]|[-a-z0-9\._~\uA0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF\u10000-\u1FFFD\u20000-\u2FFFD\u30000-\u3FFFD\u40000-\u4FFFD\u50000-\u5FFFD\u60000-\u6FFFD\u70000-\u7FFFD\u80000-\u8FFFD\u90000-\u9FFFD\uA0000-\uAFFFD\uB0000-\uBFFFD\uC0000-\uCFFFD\uD0000-\uDFFFD\uE1000-\uEFFFD!\$&\'\(\)\*\+,;=:@]))*)*|(?!(?:%[0-9a-f][0-9a-f]|[-a-z0-9\._~\uA0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF\u10000-\u1FFFD\u20000-\u2FFFD\u30000-\u3FFFD\u40000-\u4FFFD\u50000-\u5FFFD\u60000-\u6FFFD\u70000-\u7FFFD\u80000-\u8FFFD\u90000-\u9FFFD\uA0000-\uAFFFD\uB0000-\uBFFFD\uC0000-\uCFFFD\uD0000-\uDFFFD\uE1000-\uEFFFD!\$&\'\(\)\*\+,;=:@])))(?:\?(?:(?:%[0-9a-f][0-9a-f]|[-a-z0-9\._~\uA0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF\u10000-\u1FFFD\u20000-\u2FFFD\u30000-\u3FFFD\u40000-\u4FFFD\u50000-\u5FFFD\u60000-\u6FFFD\u70000-\u7FFFD\u80000-\u8FFFD\u90000-\u9FFFD\uA0000-\uAFFFD\uB0000-\uBFFFD\uC0000-\uCFFFD\uD0000-\uDFFFD\uE1000-\uEFFFD!\$&\'\(\)\*\+,;=:@])|[\uE000-\uF8FF\uF0000-\uFFFFD|\u100000-\u10FFFD\/\?])*)?(?:\#(?:(?:%[0-9a-f][0-9a-f]|[-a-z0-9\._~\uA0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF\u10000-\u1FFFD\u20000-\u2FFFD\u30000-\u3FFFD\u40000-\u4FFFD\u50000-\u5FFFD\u60000-\u6FFFD\u70000-\u7FFFD\u80000-\u8FFFD\u90000-\u9FFFD\uA0000-\uAFFFD\uB0000-\uBFFFD\uC0000-\uCFFFD\uD0000-\uDFFFD\uE1000-\uEFFFD!\$&\'\(\)\*\+,;=:@])|[\/\?])*)?\s*$/i,week:/^[0-9]{4}-W0*([1-9]|[1-4][0-9]|5[0-3])$/},error_class:"validation_error"};k.supported={types:{text:{regex:null,message:"",validationAttributes:["required","pattern"]},search:{regex:null,message:"",validationAttributes:["required","pattern"]},url:{regex:k.settings.regex.url,message:k.settings.messages.url,validationAttributes:["required","pattern"]},tel:{regex:null,message:"",validationAttributes:["required","pattern"]},email:{regex:k.settings.regex.email,message:k.settings.messages.email,validationAttributes:["required","pattern","multiple"]},password:{regex:null,message:"",validationAttributes:["required","pattern"]},date:{regex:k.settings.regex.date,message:k.settings.messages.date,validationAttributes:["required","max","min","step"]},datetime:{regex:k.settings.regex.datetime,message:k.settings.messages.datetime,validationAttributes:["required","max","min","step"]},datetimelocal:{regex:k.settings.regex.datetimelocal,message:k.settings.messages.datetime,validationAttributes:["required","max","min","step"]},month:{regex:k.settings.regex.month,message:k.settings.messages.month,validationAttributes:["required","max","min","step"]},week:{regex:k.settings.regex.week,message:k.settings.messages.week,validationAttributes:["required","max","min","step"]},time:{regex:k.settings.regex.time,message:k.settings.messages.time,validationAttributes:["required","max","min","step"]},number:{regex:k.settings.regex.numeric,message:k.settings.messages.numeric,validationAttributes:["required","max","min","step"]},range:{regex:k.settings.regex.numeric,message:k.settings.messages.numeric,validationAttributes:["max","min","step"]},checkbox:{regex:null,message:"",validationAttributes:["required"]},radio:{regex:null,message:"",validationAttributes:["required"]},color:{regex:k.settings.regex.color,message:k.settings.messages.color,validationAttributes:[]},file:{regex:null,message:"",validationAttributes:["required"]},hidden:{regex:null,message:"",validationAttributes:[]},submit:{regex:null,message:"",validationAttributes:[]},image:{regex:null,message:"",validationAttributes:[]},button:{regex:null,message:"",validationAttributes:[]},reset:{regex:null,message:"",validationAttributes:[]},select:{regex:null,message:"",validationAttributes:[]},textarea:{regex:null,message:"",validationAttributes:["required","maxlength"]}},attributes:{required:{message:k.settings.messages.required,validationFunction:b},pattern:{message:k.settings.messages.pattern,validationFunction:n},max:{message:k.settings.messages.maximum,validationFunction:c},min:{message:k.settings.messages.minimum,validationFunction:p},step:{message:k.settings.messages.step,validationFunction:q},multiple:{message:"",validationFunction:null},maxlength:{message:"",validationFunction:null}}};function h(t){var v="";var u=t.tagName.toLowerCase();var w=t.getAttribute("type").replace(/-/,"");if(u!="input"){if(k.supported.types[u]){w=u;}else{return v;}}else{if(!k.supported.types[w]){w="text";}}var r=k.supported.types[w];var x=r.regex;if(x!=null&&t.value.length!=""){if(!x.test(t.value)){v=r.message;}}if(v==""){var s=r.validationAttributes;if(s.length>0){for(i=0;i<s.length;i++){if(v==""){if(t.getAttribute(s[i])!=null&&k.supported.attributes[s[i]].validationFunction!=null){v=k.supported.attributes[s[i]].validationFunction(t);}}}}}return v;}function b(r){if(r.getAttribute("required")!=null&&r.value.length==0){return k.settings.messages.required;}return"";}function n(r){var t=r.getAttribute("pattern");if(t!=null&&r.value!=""){var s=RegExp(t);if(!s.test(r.value)){return k.settings.messages.pattern;}}return"";}function c(s){var t=j(s.getAttribute("max"),s.getAttribute("type"));var r=j(s.value,s.getAttribute("type"));if(t!=null&&s.value!=""&&r>t){return k.settings.messages.maximum+" "+t;}return"";}function p(s){var t=j(s.getAttribute("min"),s.getAttribute("type"));var r=j(s.value,s.getAttribute("type"));if(t!=null&&s.value!=""&&r<t){return k.settings.messages.minimum+" "+t;}return"";}function q(r){var t=parseFloat(r.getAttribute("step"));var s=0;switch(r.getAttribute("type")){case"date":t=t*24*60*60*1000;break;case"datetime":case"datetime-local":t=t*60*1000;break;case"time":t=t*1000;break;case"week":t=t*7*24*60*60*1000;break;case"month":break;case"number":case"range":default:break;}if(r.getAttribute("min")!=null){s=j(r.getAttribute("min"));}if(t!=null&&t>0&&r.value%(t+s)!=0&&r.value!=""){return k.settings.messages.step;}return"";}function m(r,t){var s=document.createElement("span");s.appendChild(document.createTextNode(t));f(s,k.settings.error_class);if(r.nextSibling==null||!e(r.nextSibling,k.settings.error_class)){if(r.nextSibling!=null){r.parentNode.insertBefore(s,r.nextSibling);}else{r.parentNode.appendChild(s);}}}function j(t,s){switch(s){case"month":var r=new Date(t);return(r.getUTCYear()-1970)*12+r.getUTCMonth();break;case"date":case"datetime":case"datetime-local":case"week":var r=new Date(t);return r.getMilliseconds();break;case"time":var r=new Date("January 1, 2001 "+t);return r.getMilliseconds();break;case"number":case"range":default:return parseFloat(t);break;}}function g(r){if(r.nextSibling==null){return;}if(e(r.nextSibling,k.settings.error_class)){r.parentNode.removeChild(r.nextSibling);}}function f(r,s){r.className+=" "+s+" ";}function e(r,s){if((" "+r.className+" ").replace(/[\n\t]/g," ").indexOf(" "+k.settings.error_class+" ")>-1){return true;}else{return false;}}function o(r,s){r.className=r.className.replace(new RegExp("(?:^|s)"+s+"(?!S)",""));}var a=window.onload||function(){};window.onload=function(){for(var s=0;s<document.forms.length;s++){var t=document.forms[s];var r=t.onsubmit||function(){};t.onsubmit=function(){var x=true;for(var u=0;u<t.elements.length;u++){var v=t.elements[u];var w="";w=h(v);g(v);if(w!=""){x=false;m(v,w);}}if(x){r();}return x;};}a();};l.NativeValidationShim=k;}(this));