gentelella/vendors/validator/validator.min.js

6 lines
5.8 KiB
JavaScript
Raw Normal View History

/*
Validator v1.0.5
(c) 2012 Yair Even Or <http://dropthebit.com>
MIT-style license.
*/
var validator=(function(){var message,tests,checkField,validate,mark,unmark,field,minmax,defaults,validateWords,lengthRange,lengthLimit,pattern,alertTxt,data,email_illegalChars=/[\(\)\<\>\,\;\:\\\/\"\[\]]/,email_filter=/^.+@.+\..{2,3}$/;message={invalid:"invalid input",empty:"please put something here",min:"input is too short",max:"input is too long",number_min:"too low",number_max:"too high",url:"invalid URL",number:"not a number",email:"email address is invalid",email_repeat:"emails do not match",password_repeat:"passwords do not match",repeat:"no match",complete:"input is not complete",select:"Please select an option"};defaults={alerts:true};tests={sameAsPlaceholder:function(a){return $.fn.placeholder&&a.attr("placeholder")!==undefined&&data.val==a.prop("placeholder")},hasValue:function(a){if(!a){alertTxt=message.empty;return false}return true},linked:function(a,b){if(b!=a){alertTxt=message[data.type+"_repeat"]||message.no_match;return false}return true},email:function(a){if(!email_filter.test(a)||a.match(email_illegalChars)){alertTxt=a?message.email:message.empty;return false}return true},text:function(a){if(validateWords){var words=a.split(" ");var wordsLength=function(len){for(var w=words.length;w--;){if(words[w].length<len){return false}}return true};if(words.length<validateWords||!wordsLength(2)){alertTxt=message.complete;return false}return true}if(a.length<lengthRange[0]){alertTxt=message.min;return false}if(lengthRange[1]&&a.length>lengthRange[1]){alertTxt=message.max;return false}if(lengthLimit.length){var obeyLimit=false;while(lengthLimit.length){if(lengthLimit.pop()==a.length){obeyLimit=true}}if(!obeyLimit){alertTxt=message.complete;return false}}if(pattern){var regex;switch(pattern){case"alphanumeric":regex=/^[a-z0-9]+$/i;break;case"numeric":regex=/^[0-9]+$/i;break;case"phone":regex=/^\+?([0-9]|[-|' '])+$/i;break;default:regex=pattern}try{if(regex&&!eval(regex).test(a)){return false}}catch(err){console.log(err,field,"regex is invalid");return false}}return true},number:function(a){if(isNaN(parseFloat(a))&&!isFinite(a)){alertTxt=message.number;return false}else{if(a.length<lengthRange[0]){alertTxt=message.min;return false}else{if(lengthRange[1]&&a.length>lengthRange[1]){alertTxt=message.max;return false}else{if(minmax[0]&&(a|0)<minmax[0]){alertTxt=message.number_min;return false}else{if(minmax[1]&&(a|0)>minmax[1]){alertTxt=message.number_max;return false}}}}}return true},date:function(a){var day,A=a.split(/[-./]/g),i;if(field[0].valueAsNumber){return true}for(i=A.length;i--;){if(isNaN(parseFloat(a))&&!isFinite(a)){return false}}try{day=new Date(A[2],A[1]-1,A[0]);if(day.getMonth()+1==A[1]&&day.getDate()==A[0]){return day}return false}catch(er){console.log("date test: ",err);return false}},url:function(a){function testUrl(url){return/^(https?:\/\/)?([\w\d\-_]+\.+[A-Za-z]{2,})+\/?/.test(url)}if(!testUrl(a)){console.log(a);alertTxt=a?message.url:message.empty;return false}return true},hidden:function(a){if(a.length<lengthRange[0]){alertTxt=message.min;return false}if(pattern){var regex;if(pattern=="alphanumeric"){regex=/^[a-z0-9]+$/i;if(!regex.test(a)){return false}}}return true},select:function(a){if(!tests.hasValue(a)){alertTxt=message.select;return false}return true}};mark=function(field,text){if(!text||!field||!field.length){return false}var item=field.parents(".item"),warning;item.find(".alert").remove();if(defaults.alerts){warning=$("<div>").addClass("alert").text(text);item.append(warning)}item.removeClass("bad");setTimeout(function(){item.addClass("bad")},0)};unmark=function(field){if(!field||!field.length){console.warn('no "field" argument, null or DOM object not found');return false}field.parents(".item").removeClass("bad").find(".alert").animate({marginLeft:32,opacity:0},200,function(){$(this).remove()})};function checkField(){field=$(this);if(field[0].type!="hidden"&&field.is(":hidden")){return true}field.data("valid",true);field.data("type",field.attr("type"));field.data("val",field[0].value.replace(/^\s+|\s+$/g,""));data=field.data();var v=data.val;alertTxt=message[field.prop("name")]||message.in