diff --git a/jquery.formvalidator.js b/jquery.formvalidator.js index 0b99c2e..770447c 100644 --- a/jquery.formvalidator.js +++ b/jquery.formvalidator.js @@ -86,7 +86,6 @@ var config = { validationRuleAttribute : 'data-validation', errorElementClass : 'error', // Class that will be put on elements which value is invalid - borderColorOnError : 'red', dateFormat : 'yyyy-mm-dd' }; @@ -99,20 +98,11 @@ language = jQueryFormUtils.LANG; } - var elementType = $element.attr('type'); - if (jQueryFormUtils.defaultBorderColor === null && elementType !== 'submit' && elementType !== 'checkbox' && elementType !== 'radio') { - jQueryFormUtils.defaultBorderColor = $element.css('border-color'); - } - // Remove possible error style applied by previous validation $element .removeClass(config.errorElementClass) .parent() .find('.jquery_form_error_message').remove(); - - if(config.borderColorOnError !== '') { - $element.css('border-color', jQueryFormUtils.defaultBorderColor); - } var validation = jQueryFormUtils.validateInput($element, language, config); @@ -124,10 +114,6 @@ .parent() .append(''+validation+''); - if(config.borderColorOnError !== '') { - $element.css('border-color', config.borderColorOnError); - } - if(attachKeyupEvent) { $element.bind('keyup', function() { $(this).doValidate(language, settings, false); @@ -152,7 +138,6 @@ var config = { ignore : [], // Names of inputs not to be validated even though node attribute containing the validation rules tells us to errorElementClass : 'error', // Class that will be put on elements which value is invalid - borderColorOnError : 'red', // Border color of elements which value is invalid, empty string to not change border color errorMessageClass : 'jquery_form_error_message', // class name of div containing error messages when validation fails validationRuleAttribute : 'data-validation', // name of the attribute holding the validation rules errorMessagePosition : 'top', // Can be either "top" or "element" @@ -240,11 +225,6 @@ $form.find('input,textarea,select').each(function() { if (!ignoreInput($(this).attr('name'), $(this).attr('type'))) { - // memorize border color - if (jQueryFormUtils.defaultBorderColor === null && $(this).attr('type')) { - jQueryFormUtils.defaultBorderColor = $(this).css('border-color'); - } - var valid = jQueryFormUtils.validateInput( $(this), language, @@ -263,9 +243,7 @@ // // Reset style and remove error class // - $form.find('input,textarea,select') - .css('border-color', jQueryFormUtils.defaultBorderColor) - .removeClass(config.errorElementClass); + $form.find('input,textarea,select').removeClass(config.errorElementClass); // @@ -282,9 +260,6 @@ // Apply error style to invalid inputs for (var i = 0; i < errorInputs.length; i++) { - if (config.borderColorOnError !== '') { - errorInputs[i].css('border-color', config.borderColorOnError); - } errorInputs[i].addClass(config.errorElementClass); } @@ -336,11 +311,6 @@ */ var jQueryFormUtils = {}; -/** - * Static variable for holding default border color on input - */ -jQueryFormUtils.defaultBorderColor = null; - /** * Validate email * diff --git a/jquery.formvalidator.min.js b/jquery.formvalidator.min.js index 5b27760..a27de58 100644 --- a/jquery.formvalidator.min.js +++ b/jquery.formvalidator.min.js @@ -8,4 +8,4 @@ * * $version 1.3 */ -(function(a){a.extend(a.fn,{validateOnBlur:function(b,c){a(this).find("textarea,input").blur(function(){a(this).doValidate(b,c)});return a(this)},showHelpOnFocus:function(b){if(!b){b="data-help"}a(this).find("textarea,input").each(function(){var c=a(this).attr(b);if(c){a(this).focus(function(){var b=a(this);if(b.parent().find(".jquery_form_help").length==0){b.after(a("").addClass("jquery_form_help").text(c).hide().fadeIn())}}).blur(function(){a(this).parent().find(".jquery_form_help").fadeOut("slow",function(){a(this).remove()})})}});return a(this)},doValidate:function(b,c,d){if(typeof d=="undefined"){d=true}var e=a(this);var f={validationRuleAttribute:"data-validation",errorElementClass:"error",borderColorOnError:"red",dateFormat:"yyyy-mm-dd"};if(c){a.extend(f,c)}if(b){a.extend(jQueryFormUtils.LANG,b)}else{b=jQueryFormUtils.LANG}var g=e.attr("type");if(jQueryFormUtils.defaultBorderColor===null&&g!=="submit"&&g!=="checkbox"&&g!=="radio"){jQueryFormUtils.defaultBorderColor=e.css("border-color")}e.removeClass(f.errorElementClass).parent().find(".jquery_form_error_message").remove();if(f.borderColorOnError!==""){e.css("border-color",jQueryFormUtils.defaultBorderColor)}var h=jQueryFormUtils.validateInput(e,b,f);if(h===true){e.unbind("keyup")}else{e.addClass(f.errorElementClass).parent().append(''+h+"");if(f.borderColorOnError!==""){e.css("border-color",f.borderColorOnError)}if(d){e.bind("keyup",function(){a(this).doValidate(b,c,false)})}}return a(this)},validate:function(b,c){var d={ignore:[],errorElementClass:"error",borderColorOnError:"red",errorMessageClass:"jquery_form_error_message",validationRuleAttribute:"data-validation",errorMessagePosition:"top",scrollToTopOnError:true,dateFormat:"yyyy-mm-dd"};if(c){a.extend(d,c)}if(b){a.extend(jQueryFormUtils.LANG,b)}else{b=jQueryFormUtils.LANG}var e=function(a,b){if(b==="submit"||b==="button"){return true}for(var c=0;c0){for(var j=0;j";for(var j=0;j* "+g[j]}i.children().eq(0).before('

'+k+"

");if(d.scrollToTopOnError){a(window).scrollTop(i.offset().top-20)}}else{for(var j=0;j0){m.eq(0).text(h[j].attr("data-error"))}else{l.append(''+h[j].attr("data-error")+"")}}}return false}return true},restrictLength:function(a){new jQueryFormUtils.lengthRestriction(this,a);return this}})})(jQuery);var jQueryFormUtils={};jQueryFormUtils.defaultBorderColor=null;jQueryFormUtils.validateEmail=function(a){var b=/^([a-zA-Z0-9_\.\-])+@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;if(b.test(a)){var c=a.split("@");if(c.length==2){return jQueryFormUtils.validateDomain(c[1])}}return false};jQueryFormUtils.validatePhoneNumber=function(a){var b=a.match(/\+/g);var c=a.match(/-/g);if(b!==null&&b.length>1||c!==null&&c.length>1){return false}if(b!==null&&a.indexOf("+")!==0){return false}a=a.replace(/([-|\+])/g,"");return a.length>8&&a.match(/[^0-9]/g)===null};jQueryFormUtils.validateSwedishMobileNumber=function(a){if(!jQueryFormUtils.validatePhoneNumber(a)){return false}a=a.replace(/[^0-9]/g,"");var b=a.substring(0,3);if(a.length!=10&&b!=="467"){return false}else if(a.length!=11&&b==="467"){return false}return/07[0-9{1}]/.test(b)||b==="467"&&a.substr(3,1)==="0"};jQueryFormUtils.validateUKVATNumber=function(a){a=a.replace(/[^0-9]/g,"");if(a.length<9){return false}var b=false;var c=[];c=a.split("");var d=Number(c[7]+c[8]);var e=c[0];var f=c[1];if(e==0&&f>0){return false}var g=0;for(var h=0;h<7;h++){g+=c[h]*(8-h)}var i=0;var h=0;for(var j=8;j>=2;j--){i+=c[h]*j;h++}while(g>0){g-=97}g=Math.abs(g);if(d==g){b=true}if(!b){g=g%97;if(g>=55){g=g-55}else{g=g+42}if(g==d){b=true}}return b};jQueryFormUtils.validateBirthdate=function(a,b){var c=this.parseDate(a,b);if(!c){return false}var d=new Date;var e=d.getFullYear();var f=c[0];var g=c[1];var h=c[2];if(f===e){var i=d.getMonth()+1;if(g===i){var j=d.getDate();return h<=j}else{return ge-124}};jQueryFormUtils.parseDate=function(a,b){var c=b.replace(/[a-zA-Z]/gi,"").substring(0,1);var d="^";var e=b.split(c);for(var f=0;f0?"\\"+c:"")+"(\\d{"+e[f].length+"})"}d+="$";var g=a.match(new RegExp(d));if(g===null){return false}var h=function(a,b,c){for(var d=0;d28&&(k%4!==0||k%100===0&&k%400!==0)||i===2&&j>29&&(k%4===0||k%100!==0&&k%400===0)||i>12||i===0){return false}if(this.isShortMonth(i)&&j>30||!this.isShortMonth(i)&&j>31||j===0){return false}return[k,i,j]};jQueryFormUtils.parseDateInt=function(a){if(a.indexOf("0")===0){a=a.replace("0","")}return parseInt(a,10)};jQueryFormUtils.validateSwedishSecurityNumber=function(a){if(!a.match(/^(\d{4})(\d{2})(\d{2})(\d{4})$/)){return false}var b=RegExp.$1;var c=jQueryFormUtils.parseDateInt(RegExp.$2);var d=jQueryFormUtils.parseDateInt(RegExp.$3);var e=new Array(31,28,31,30,31,30,31,31,30,31,30,31);if(b%400===0||b%4===0&&b%100!==0){e[1]=29}if(c<1||c>12||d<1||d>e[c-1]){return false}a=a.substring(2,a.length);var f="";for(var g=0;g24||c>59||b===24&&c>0){return false}}return true};jQueryFormUtils.validateFloat=function(a){return a.match(/^(\-|)([0-9]+)\.([0-9]+)$/)!==null};jQueryFormUtils.validateInteger=function(a){return a!==""&&a.replace(/[0-9]/g,"")===""};jQueryFormUtils.isShortMonth=function(a){return a%2===0&&a<7||a%2!==0&&a>7};jQueryFormUtils.simpleSpamCheck=function(a,b){var c=b.match(/captcha([0-9a-z]+)/i)[1].replace("captcha","");return a===c};jQueryFormUtils.validateDomain=function(a){a=a.replace("ftp://","").replace("https://","").replace("http://","").replace("www.","");var b=new Array(".com",".net",".org",".biz",".coop",".info",".museum",".name",".pro",".edu",".gov",".int",".mil",".ac",".ad",".ae",".af",".ag",".ai",".al",".am",".an",".ao",".aq",".ar",".as",".at",".au",".aw",".az",".ba",".bb",".bd",".be",".bf",".bg",".bh",".bi",".bj",".bm",".bn",".bo",".br",".bs",".bt",".bv",".bw",".by",".bz",".ca",".cc",".cd",".cf",".cg",".ch",".ci",".ck",".cl",".cm",".cn",".co",".cr",".cu",".cv",".cx",".cy",".cz",".de",".dj",".dk",".dm",".do",".dz",".ec",".ee",".eg",".eh",".er",".es",".et",".fi",".fj",".fk",".fm",".fo",".fr",".ga",".gd",".ge",".gf",".gg",".gh",".gi",".gl",".gm",".gn",".gp",".gq",".gr",".gs",".gt",".gu",".gv",".gy",".hk",".hm",".hn",".hr",".ht",".hu",".id",".ie",".il",".im",".in",".io",".iq",".ir",".is",".it",".je",".jm",".jo",".jp",".ke",".kg",".kh",".ki",".km",".kn",".kp",".kr",".kw",".ky",".kz",".la",".lb",".lc",".li",".lk",".lr",".ls",".lt",".lu",".lv",".ly",".ma",".mc",".md",".mg",".mh",".mk",".ml",".mm",".mn",".mo",".mp",".mq",".mr",".ms",".mt",".mu",".mv",".mw",".mx",".my",".mz",".na",".nc",".ne",".nf",".ng",".ni",".nl",".no",".np",".nr",".nu",".nz",".om",".pa",".pe",".pf",".pg",".ph",".pk",".pl",".pm",".pn",".pr",".ps",".pt",".pw",".py",".qa",".re",".ro",".rw",".ru",".sa",".sb",".sc",".sd",".se",".sg",".sh",".si",".sj",".sk",".sl",".sm",".sn",".so",".sr",".st",".sv",".sy",".sz",".tc",".td",".tf",".tg",".th",".tj",".tk",".tm",".tn",".to",".tp",".tr",".tt",".tv",".tw",".tz",".ua",".ug",".uk",".um",".us",".uy",".uz",".va",".vc",".ve",".vg",".vi",".vn",".vu",".ws",".wf",".ye",".yt",".yu",".za",".zm",".zw",".mobi",".xxx");var c=a.lastIndexOf(".");var d=a.substring(0,c);var e=a.substring(c,a.length);var f=false;for(var g=0;g57){return false}else{var l=d.substring(0,1);var m=d.substring(d.length-1,d.length);if(l==="-"||l==="."||m==="-"||m==="."){return false}if(d.split(".").length>3||d.split("..").length>1){return false}if(d.replace(/[0-9a-z\.\-]/g,"")!==""){return false}}return true};jQueryFormUtils.validateInput=function(a,b,c,d){var e=jQuery.trim(a.val());var f=a.attr(c.validationRuleAttribute);if(typeof f!="undefined"&&f!==null){var g=function(a,b){var c=new RegExp("("+b+"[0-9-]+)","g");return a.match(c)[0].replace(/[^0-9\-]/g,"")};if(f.indexOf("required")>-1&&e===""){return b.requiredFields}if(f.indexOf("validate_min_length")>-1&&e.length-1&&e.length>g(f,"length")){return b.toLongStart+g(f,"length")+b.toLongEnd}if(f.indexOf("validate_length")>-1){var h=g(f,"length").split("-");if(e.lengthparseInt(h[1],10)){return b.badLength+g(f,"length")+b.toLongEnd}}if(f.indexOf("validate_email")>-1&&!jQueryFormUtils.validateEmail(e)){return b.badEmail}else if(f.indexOf("validate_domain")>-1&&!jQueryFormUtils.validateDomain(e)){return b.badDomain}else if(f.indexOf("validate_url")>-1&&!jQueryFormUtils.validateUrl(e)){return b.badUrl}else if(f.indexOf("validate_float")>-1&&!jQueryFormUtils.validateFloat(e)){return b.badFloat}else if(f.indexOf("validate_int")>-1&&!jQueryFormUtils.validateInteger(e)){return b.badInt}else if(f.indexOf("validate_time")>-1&&!jQueryFormUtils.validateTime(e)){return b.badTime}else if(f.indexOf("validate_date")>-1&&!jQueryFormUtils.parseDate(e,c.dateFormat)){return b.badDate}else if(f.indexOf("validate_birthdate")>-1&&!jQueryFormUtils.validateBirthdate(e,c.dateFormat)){return b.badDate}else if(f.indexOf("validate_phone")>-1&&!jQueryFormUtils.validatePhoneNumber(e)){return b.badTelephone}else if(f.indexOf("validate_swemobile")>-1&&!jQueryFormUtils.validateSwedishMobileNumber(e)){return b.badTelephone}else if(f.indexOf("validate_spamcheck")>-1&&!jQueryFormUtils.simpleSpamCheck(e,f)){return b.badSecurityAnswer}else if(f.indexOf("validate_ukvatnumber")>-1&&!jQueryFormUtils.validateUKVATNumber(e)){return b.badUKVatAnswer}if(f.indexOf("validate_custom")>-1&&f.indexOf("regexp/")>-1){var i=new RegExp(f.split("regexp/")[1].split("/")[0]);if(!i.test(e)){return b.badCustomVal}}if(f.indexOf("validate_swesc")>-1&&!jQueryFormUtils.validateSwedishSecurityNumber(e)){return b.badSecurityNumber}if(f.indexOf("validate_confirmation")>-1&&typeof d!="undefined"){var j="";var k=d.find("input[name="+a.attr("name")+"_confirmation]").eq(0);if(k){j=k.val()}if(e!==j){return b.notConfirmed}}}return true};jQueryFormUtils.LANG={errorTitle:"Form submission failed!",requiredFields:"You have not answered all required fields",badTime:"You have not given a correct time",badEmail:"You have not given a correct e-mail address",badTelephone:"You have not given a correct phone number",badSecurityAnswer:"You have not given a correct answer to the security question",badDate:"You have not given a correct date",toLongStart:"You have given an answer longer then ",toLongEnd:" characters",toShortStart:"You have given an answer shorter then ",toShortEnd:" characters",badLength:"You have to give an answer between ",notConfirmed:"Values could not be confirmed",badDomain:"Incorrect domain value",badUrl:"Incorrect url value",badFloat:"Incorrect float value",badCustomVal:"You gave an incorrect answer",badInt:"Incorrect integer value",badSecurityNumber:"Your social security number was incorrect",badUKVatAnswer:"Incorrect UK VAT Number"};jQueryFormUtils.validateUrl=function(a){var b=/^(https|http|ftp):\/\/(((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)?(((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?)(:\d*)?)(\/((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)?(\?((([a-z]|\d|\[|\]|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(\#((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/i;if(b.test(a)){var c=a.split(/^https|^http|^ftp/i)[1].replace("://","");var d=c.indexOf("/");if(d>-1)c=c.substr(0,d);return jQueryFormUtils.validateDomain(c)}return false};jQueryFormUtils.lengthRestriction=function(a,b){this.input=a;this.maxLength=parseInt(b.text(),10);var c=this;$(this.input).keyup(function(){$(this).val($(this).val().substring(0,c.maxLength));b.text(c.maxLength-$(this).val().length)}).focus(function(){$(this).keyup()}).trigger("keyup")} \ No newline at end of file +(function(a){a.extend(a.fn,{validateOnBlur:function(b,c){a(this).find("textarea,input").blur(function(){a(this).doValidate(b,c)});return a(this)},showHelpOnFocus:function(b){if(!b){b="data-help"}a(this).find("textarea,input").each(function(){var c=a(this).attr(b);if(c){a(this).focus(function(){var b=a(this);if(b.parent().find(".jquery_form_help").length==0){b.after(a("").addClass("jquery_form_help").text(c).hide().fadeIn())}}).blur(function(){a(this).parent().find(".jquery_form_help").fadeOut("slow",function(){a(this).remove()})})}});return a(this)},doValidate:function(b,c,d){if(typeof d=="undefined"){d=true}var e=a(this);var f={validationRuleAttribute:"data-validation",errorElementClass:"error",dateFormat:"yyyy-mm-dd"};if(c){a.extend(f,c)}if(b){a.extend(jQueryFormUtils.LANG,b)}else{b=jQueryFormUtils.LANG}e.removeClass(f.errorElementClass).parent().find(".jquery_form_error_message").remove();var g=jQueryFormUtils.validateInput(e,b,f);if(g===true){e.unbind("keyup")}else{e.addClass(f.errorElementClass).parent().append(''+g+"");if(d){e.bind("keyup",function(){a(this).doValidate(b,c,false)})}}return a(this)},validate:function(b,c){var d={ignore:[],errorElementClass:"error",errorMessageClass:"jquery_form_error_message",validationRuleAttribute:"data-validation",errorMessagePosition:"top",scrollToTopOnError:true,dateFormat:"yyyy-mm-dd"};if(c){a.extend(d,c)}if(b){a.extend(jQueryFormUtils.LANG,b)}else{b=jQueryFormUtils.LANG}var e=function(a,b){if(b==="submit"||b==="button"){return true}for(var c=0;c0){for(var j=0;j";for(var j=0;j* "+g[j]}i.children().eq(0).before('

'+k+"

");if(d.scrollToTopOnError){a(window).scrollTop(i.offset().top-20)}}else{for(var j=0;j0){m.eq(0).text(h[j].attr("data-error"))}else{l.append(''+h[j].attr("data-error")+"")}}}return false}return true},restrictLength:function(a){new jQueryFormUtils.lengthRestriction(this,a);return this}})})(jQuery);var jQueryFormUtils={};jQueryFormUtils.validateEmail=function(a){var b=/^([a-zA-Z0-9_\.\-])+@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;if(b.test(a)){var c=a.split("@");if(c.length==2){return jQueryFormUtils.validateDomain(c[1])}}return false};jQueryFormUtils.validatePhoneNumber=function(a){var b=a.match(/\+/g);var c=a.match(/-/g);if(b!==null&&b.length>1||c!==null&&c.length>1){return false}if(b!==null&&a.indexOf("+")!==0){return false}a=a.replace(/([-|\+])/g,"");return a.length>8&&a.match(/[^0-9]/g)===null};jQueryFormUtils.validateSwedishMobileNumber=function(a){if(!jQueryFormUtils.validatePhoneNumber(a)){return false}a=a.replace(/[^0-9]/g,"");var b=a.substring(0,3);if(a.length!=10&&b!=="467"){return false}else if(a.length!=11&&b==="467"){return false}return/07[0-9{1}]/.test(b)||b==="467"&&a.substr(3,1)==="0"};jQueryFormUtils.validateUKVATNumber=function(a){a=a.replace(/[^0-9]/g,"");if(a.length<9){return false}var b=false;var c=[];c=a.split("");var d=Number(c[7]+c[8]);var e=c[0];var f=c[1];if(e==0&&f>0){return false}var g=0;for(var h=0;h<7;h++){g+=c[h]*(8-h)}var i=0;var h=0;for(var j=8;j>=2;j--){i+=c[h]*j;h++}while(g>0){g-=97}g=Math.abs(g);if(d==g){b=true}if(!b){g=g%97;if(g>=55){g=g-55}else{g=g+42}if(g==d){b=true}}return b};jQueryFormUtils.validateBirthdate=function(a,b){var c=this.parseDate(a,b);if(!c){return false}var d=new Date;var e=d.getFullYear();var f=c[0];var g=c[1];var h=c[2];if(f===e){var i=d.getMonth()+1;if(g===i){var j=d.getDate();return h<=j}else{return ge-124}};jQueryFormUtils.parseDate=function(a,b){var c=b.replace(/[a-zA-Z]/gi,"").substring(0,1);var d="^";var e=b.split(c);for(var f=0;f0?"\\"+c:"")+"(\\d{"+e[f].length+"})"}d+="$";var g=a.match(new RegExp(d));if(g===null){return false}var h=function(a,b,c){for(var d=0;d28&&(k%4!==0||k%100===0&&k%400!==0)||i===2&&j>29&&(k%4===0||k%100!==0&&k%400===0)||i>12||i===0){return false}if(this.isShortMonth(i)&&j>30||!this.isShortMonth(i)&&j>31||j===0){return false}return[k,i,j]};jQueryFormUtils.parseDateInt=function(a){if(a.indexOf("0")===0){a=a.replace("0","")}return parseInt(a,10)};jQueryFormUtils.validateSwedishSecurityNumber=function(a){if(!a.match(/^(\d{4})(\d{2})(\d{2})(\d{4})$/)){return false}var b=RegExp.$1;var c=jQueryFormUtils.parseDateInt(RegExp.$2);var d=jQueryFormUtils.parseDateInt(RegExp.$3);var e=new Array(31,28,31,30,31,30,31,31,30,31,30,31);if(b%400===0||b%4===0&&b%100!==0){e[1]=29}if(c<1||c>12||d<1||d>e[c-1]){return false}a=a.substring(2,a.length);var f="";for(var g=0;g24||c>59||b===24&&c>0){return false}}return true};jQueryFormUtils.validateFloat=function(a){return a.match(/^(\-|)([0-9]+)\.([0-9]+)$/)!==null};jQueryFormUtils.validateInteger=function(a){return a!==""&&a.replace(/[0-9]/g,"")===""};jQueryFormUtils.isShortMonth=function(a){return a%2===0&&a<7||a%2!==0&&a>7};jQueryFormUtils.simpleSpamCheck=function(a,b){var c=b.match(/captcha([0-9a-z]+)/i)[1].replace("captcha","");return a===c};jQueryFormUtils.validateDomain=function(a){a=a.replace("ftp://","").replace("https://","").replace("http://","").replace("www.","");var b=new Array(".com",".net",".org",".biz",".coop",".info",".museum",".name",".pro",".edu",".gov",".int",".mil",".ac",".ad",".ae",".af",".ag",".ai",".al",".am",".an",".ao",".aq",".ar",".as",".at",".au",".aw",".az",".ba",".bb",".bd",".be",".bf",".bg",".bh",".bi",".bj",".bm",".bn",".bo",".br",".bs",".bt",".bv",".bw",".by",".bz",".ca",".cc",".cd",".cf",".cg",".ch",".ci",".ck",".cl",".cm",".cn",".co",".cr",".cu",".cv",".cx",".cy",".cz",".de",".dj",".dk",".dm",".do",".dz",".ec",".ee",".eg",".eh",".er",".es",".et",".fi",".fj",".fk",".fm",".fo",".fr",".ga",".gd",".ge",".gf",".gg",".gh",".gi",".gl",".gm",".gn",".gp",".gq",".gr",".gs",".gt",".gu",".gv",".gy",".hk",".hm",".hn",".hr",".ht",".hu",".id",".ie",".il",".im",".in",".io",".iq",".ir",".is",".it",".je",".jm",".jo",".jp",".ke",".kg",".kh",".ki",".km",".kn",".kp",".kr",".kw",".ky",".kz",".la",".lb",".lc",".li",".lk",".lr",".ls",".lt",".lu",".lv",".ly",".ma",".mc",".md",".mg",".mh",".mk",".ml",".mm",".mn",".mo",".mp",".mq",".mr",".ms",".mt",".mu",".mv",".mw",".mx",".my",".mz",".na",".nc",".ne",".nf",".ng",".ni",".nl",".no",".np",".nr",".nu",".nz",".om",".pa",".pe",".pf",".pg",".ph",".pk",".pl",".pm",".pn",".pr",".ps",".pt",".pw",".py",".qa",".re",".ro",".rw",".ru",".sa",".sb",".sc",".sd",".se",".sg",".sh",".si",".sj",".sk",".sl",".sm",".sn",".so",".sr",".st",".sv",".sy",".sz",".tc",".td",".tf",".tg",".th",".tj",".tk",".tm",".tn",".to",".tp",".tr",".tt",".tv",".tw",".tz",".ua",".ug",".uk",".um",".us",".uy",".uz",".va",".vc",".ve",".vg",".vi",".vn",".vu",".ws",".wf",".ye",".yt",".yu",".za",".zm",".zw",".mobi",".xxx");var c=a.lastIndexOf(".");var d=a.substring(0,c);var e=a.substring(c,a.length);var f=false;for(var g=0;g57){return false}else{var l=d.substring(0,1);var m=d.substring(d.length-1,d.length);if(l==="-"||l==="."||m==="-"||m==="."){return false}if(d.split(".").length>3||d.split("..").length>1){return false}if(d.replace(/[0-9a-z\.\-]/g,"")!==""){return false}}return true};jQueryFormUtils.validateInput=function(a,b,c,d){var e=jQuery.trim(a.val());var f=a.attr(c.validationRuleAttribute);if(typeof f!="undefined"&&f!==null){var g=function(a,b){var c=new RegExp("("+b+"[0-9-]+)","g");return a.match(c)[0].replace(/[^0-9\-]/g,"")};if(f.indexOf("required")>-1&&e===""){return b.requiredFields}if(f.indexOf("validate_min_length")>-1&&e.length-1&&e.length>g(f,"length")){return b.toLongStart+g(f,"length")+b.toLongEnd}if(f.indexOf("validate_length")>-1){var h=g(f,"length").split("-");if(e.lengthparseInt(h[1],10)){return b.badLength+g(f,"length")+b.toLongEnd}}if(f.indexOf("validate_email")>-1&&!jQueryFormUtils.validateEmail(e)){return b.badEmail}else if(f.indexOf("validate_domain")>-1&&!jQueryFormUtils.validateDomain(e)){return b.badDomain}else if(f.indexOf("validate_url")>-1&&!jQueryFormUtils.validateUrl(e)){return b.badUrl}else if(f.indexOf("validate_float")>-1&&!jQueryFormUtils.validateFloat(e)){return b.badFloat}else if(f.indexOf("validate_int")>-1&&!jQueryFormUtils.validateInteger(e)){return b.badInt}else if(f.indexOf("validate_time")>-1&&!jQueryFormUtils.validateTime(e)){return b.badTime}else if(f.indexOf("validate_date")>-1&&!jQueryFormUtils.parseDate(e,c.dateFormat)){return b.badDate}else if(f.indexOf("validate_birthdate")>-1&&!jQueryFormUtils.validateBirthdate(e,c.dateFormat)){return b.badDate}else if(f.indexOf("validate_phone")>-1&&!jQueryFormUtils.validatePhoneNumber(e)){return b.badTelephone}else if(f.indexOf("validate_swemobile")>-1&&!jQueryFormUtils.validateSwedishMobileNumber(e)){return b.badTelephone}else if(f.indexOf("validate_spamcheck")>-1&&!jQueryFormUtils.simpleSpamCheck(e,f)){return b.badSecurityAnswer}else if(f.indexOf("validate_ukvatnumber")>-1&&!jQueryFormUtils.validateUKVATNumber(e)){return b.badUKVatAnswer}if(f.indexOf("validate_custom")>-1&&f.indexOf("regexp/")>-1){var i=new RegExp(f.split("regexp/")[1].split("/")[0]);if(!i.test(e)){return b.badCustomVal}}if(f.indexOf("validate_swesc")>-1&&!jQueryFormUtils.validateSwedishSecurityNumber(e)){return b.badSecurityNumber}if(f.indexOf("validate_confirmation")>-1&&typeof d!="undefined"){var j="";var k=d.find("input[name="+a.attr("name")+"_confirmation]").eq(0);if(k){j=k.val()}if(e!==j){return b.notConfirmed}}}return true};jQueryFormUtils.LANG={errorTitle:"Form submission failed!",requiredFields:"You have not answered all required fields",badTime:"You have not given a correct time",badEmail:"You have not given a correct e-mail address",badTelephone:"You have not given a correct phone number",badSecurityAnswer:"You have not given a correct answer to the security question",badDate:"You have not given a correct date",toLongStart:"You have given an answer longer than ",toLongEnd:" characters",toShortStart:"You have given an answer shorter than ",toShortEnd:" characters",badLength:"You have to give an answer between ",notConfirmed:"Values could not be confirmed",badDomain:"Incorrect domain value",badUrl:"Incorrect url value",badFloat:"Incorrect float value",badCustomVal:"You gave an incorrect answer",badInt:"Incorrect integer value",badSecurityNumber:"Your social security number was incorrect",badUKVatAnswer:"Incorrect UK VAT Number"};jQueryFormUtils.validateUrl=function(a){var b=/^(https|http|ftp):\/\/(((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)?(((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?)(:\d*)?)(\/((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)?(\?((([a-z]|\d|\[|\]|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(\#((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/i;if(b.test(a)){var c=a.split(/^https|^http|^ftp/i)[1].replace("://","");var d=c.indexOf("/");if(d>-1)c=c.substr(0,d);return jQueryFormUtils.validateDomain(c)}return false};jQueryFormUtils.lengthRestriction=function(a,b){this.input=a;this.maxLength=parseInt(b.text(),10);var c=this;$(this.input).keyup(function(){$(this).val($(this).val().substring(0,c.maxLength));b.text(c.maxLength-$(this).val().length)}).focus(function(){$(this).keyup()}).trigger("keyup")} \ No newline at end of file diff --git a/style.css b/style.css index 3fb5c74..13d2fc4 100644 --- a/style.css +++ b/style.css @@ -92,6 +92,10 @@ input[type=submit] { -webkit-border-radius: 12px; } +input.error, select.error { + border: 1px red solid; +} + .error { background: pink; }