vanilla-validation
Version:
Vanilla JavaScript validation rules
1 lines • 5.69 kB
JavaScript
!function(e,r){"object"==typeof exports&&"object"==typeof module?module.exports=r(require("moment")):"function"==typeof define&&define.amd?define("VanillaValidation",["moment"],r):"object"==typeof exports?exports.VanillaValidation=r(require("moment")):e.VanillaValidation=r(e.moment)}(this,function(e){return function(e){function r(a){if(n[a])return n[a].exports;var s=n[a]={exports:{},id:a,loaded:!1};return e[a].call(s.exports,s,s.exports,r),s.loaded=!0,s.exports}var n={};return r.m=e,r.c=n,r.p="",r(0)}([function(e,r,n){"use strict";var a=n(1),s={vrule_required:function(e,r){var n=e.value,a=n.replace("£","");return!(!a||"Please select..."==a)||(void 0===r||null===r?{message:"This question is required"}:{message:r})},vrule_requiredZero:function(e){return!!e.value||(e.classList.contains("currency")?e.value="£0":e.value="0",!0)},vrule_requiredIf:function(e,r){for(var n=r[0],a=r[1].split("||"),s=!1,t=0;t<a.length;t++)n.value==a[t]&&(s=!0);if(s){var u=e.value;return!!u||{message:"This question is required"}}return!0},vrule_checkboxTrue:function(e,r){var n=e.querySelector("input[type='checkbox']");return!!n.checked||(void 0===r||null===r?{message:"Please tick this box to continue"}:{message:r})},vrule_btn_required:function(e,r){var n=e.querySelectorAll("input[type='radio'], input[type='checkbox']"),a=!1;return Array.prototype.filter.call(n,function(e){e.checked&&(a=!0)}),!!a||(void 0===r||null===r?{message:"Please select an option"}:{message:r})},vrule_textInput:function(e){var r=e.value,n=/^[a-zA-Z'\-\s]+$/;return!(!n.test(r)&&""!=r)||{message:"Please only enter letters"}},vrule_numberInput:function(e){var r=e.value,n=/^\d+$/;return!!n.test(r)||{message:"Please only enter numbers"}},vrule_minLength:function(e,r,n){var a=e.value;return a.length>=r||""==a||(void 0===n||null===n?{message:"This field requires at least "+r+" characters"}:{message:n})},vrule_maxLength:function(e,r,n){var a=e.value;return a.length<=r||""==a||(void 0===n||null===n?{message:"This field can not contain more than "+r+" characters"}:{message:n})},vrule_minValue:function(e,r,n){var a=e.value;return a=a.replace("£","").replace(/,/g,""),a>=r||""==a||(console.log("custom message:",n),void 0===n||null===n?{message:"This field requires minimum value of "+r}:{message:n})},vrule_maxValue:function(e,r,n){var a=e.value;return a=a.replace("£","").replace(/,/g,""),a<=r||""==a||(void 0===n||null===n?{message:"This field requires maximum value of "+r}:{message:n})},vrule_date:function(e){var r=a(e,"YYYY/MM/DD",!0).isValid(),n=null===e||void 0===e||""===e;if(r||n)return!0;var s=a(e,"YYYY/MM/DD",!0).invalidAt();return 1==s?{message:"Please enter a valid date <br/>The <strong>month</strong> you entered is invalid",type:"month"}:2==s?{message:"Please enter a valid date <br/>The <strong>day</strong> you entered is invalid",type:"day"}:{message:"Please enter a valid date"}},vrule_date_required:function(e,r){return!!e||(void 0===r||null===r?{message:"This question is required"}:{message:r})},vrule_notBeforeX:function(e,r){var n=a(e.value,"YYYY/MM/DD"),s=a(r,"YYYY/MM/DD"),t=n.diff(s,"years");return t>0||{message:"The date you entered can not be before: "+r}},vrule_ageRange:function(e,r,n){var s=r[0],t=r[1],u=a(),o=a(e,"YYYY/MM/DD"),l=u.diff(o,"years"),i=null===e||void 0===e||""===e;return!!(l>=s&&l<=t||i)||(void 0===n||null===n?{message:"You must be aged between "+s+" and "+t}:{message:n})},vrule_minAge:function(e,r){var n=a(e,"DD MM YYYY"),s=a(),t=s.diff(n,"years"),u=null===e||void 0===e||""===e;return!!(t>=r||u)||{message:"You must be at least "+r}},vrule_mobileNumber:function(e){var r=e.value,n="07"==r.substring(0,2),a=11==r.length,s=/[a-zA-Z]/.test(r),t=/\s/.test(r),u=/^\d+$/.test(r);return!!(u&&n&&a&&!s&&!t||""==r)||(t?{message:"Please remove spaces from your phone number"}:u||s?{message:"Please enter a valid mobile number"}:{message:"Please remove any non-numerical characters from your phone number"})},vrule_homeNumber:function(e){var r=e.value,n=/^\(?0( *\d\)?){9,10}$/.test(r),a=/\s/.test(r);return!(!n&&""!=r||a)||(a?{message:"Please remove spaces from your phone number"}:{message:"Please provide a valid home phone number"})},vrule_anyPhone:function(e){var r=e.value;void 0==r&&(r=e[0].value);var n=/\s/.test(r),a=/^\(?0( *\d\)?){9,10}$/.test(r)&&("01"==r.substring(0,2)||"02"==r.substring(0,2)),s="07"==r.substring(0,2)&&11==r.length||"+447"==r.substring(0,4)&&13==r.length||"447"==r.substring(0,3)&&12==r.length;return!(!a&&!s||n)||{message:"Please provide a valid mobile or home phone number"}},vrule_mobileOrHomePhone:function(e,r){var n=e.value,a=$(r[0]).val();return""==a&&""==n?{message:"Please enter a mobile or home phone number"}:""!=a?this.vrule_anyPhone($(r[0]))?($(r[0]).siblings(".error-message").parent().removeClass("error").addClass("good"),!0):{message:"Please enter a valid mobile or home phone number"}:""!=n?this.vrule_anyPhone($(e))?($(r[0]).siblings(".error-message").parent().removeClass("error").addClass("good"),!0):{message:"Please enter a valid mobile or home phone number"}:void 0},vrule_email:function(e){var r=/^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;return!!r.test(e.value)||{message:"Please enter a valid email address"}},vrule_currency:function(e){var r=e.value,n=/^[\d£.,]+$/;return!r||(!!n.test(r)||{message:"This input can only contain numbers, a pound sign and commas e.g. £1,000"})},vrule_postcode:function(e){var r=e.value,n=/[A-Z]{1,2}[0-9][0-9A-Z]?\s?[0-9][A-Z]{2}/i;return!!(r.length>=5&&r.length<=8&&n.test(r))||{message:"Please enter a valid postcode"}}};e.exports=s},function(r,n){r.exports=e}])});