forked from igorescobar/jQuery-Mask-Plugin
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathjquery.mask.min.js
12 lines (12 loc) · 4.95 KB
/
jquery.mask.min.js
1
2
3
4
5
6
7
8
9
10
11
12
// jQuery Mask Plugin v1.8.0
// github.com/igorescobar/jQuery-Mask-Plugin
(function(d){"function"===typeof define&&define.amd?define(["jquery"],d):d(window.jQuery||window.Zepto)})(function(d){var m=function(b,e,a){var f=this,n,m;b=d(b);e="function"===typeof e?e(b.val(),void 0,b,a):e;var c={getCaret:function(){try{var h,p=0,c=b.get(0),g=document.selection,a=c.selectionStart;if(g&&!~navigator.appVersion.indexOf("MSIE 10"))h=g.createRange(),h.moveStart("character",b.is("input")?-b.val().length:-b.text().length),p=h.text.length;else if(a||"0"===a)p=a;return p}catch(e){}},setCaret:function(h){try{if(b.is(":focus")){var p,
a=b.get(0);a.setSelectionRange?a.setSelectionRange(h,h):a.createTextRange&&(p=a.createTextRange(),p.collapse(!0),p.moveEnd("character",h),p.moveStart("character",h),p.select())}}catch(c){}},events:function(){b.on("keydown.mask",function(){n=c.val()}).on("keyup.mask",c.behaviour).on("paste.mask drop.mask",function(){setTimeout(function(){b.keydown().keyup()},100)}).on("change.mask",function(){b.data("changed",!0)}).on("blur.mask",function(){n===b.val()||b.data("changed")||b.trigger("change");b.data("changed",
!1)}).on("focusout.mask",function(){a.clearIfNotMatch&&!m.test(c.val())&&c.val("")})},getRegexMask:function(){for(var h=[],b,a,c,d,k=0;k<e.length;k++)(b=f.translation[e[k]])?(a=b.pattern.toString().replace(/.{1}$|^.{1}/g,""),c=b.optional,(b=b.recursive)?(h.push(e[k]),d={digit:e[k],pattern:a}):h.push(c||b?a+"?":a)):h.push(e[k].replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&"));h=h.join("");d&&(h=h.replace(RegExp("("+d.digit+"(.*"+d.digit+")?)"),"($1)?").replace(RegExp(d.digit,"g"),d.pattern));return RegExp(h)},
destroyEvents:function(){b.off("keydown keyup paste drop change blur focusout ".split(" ").join(".mask ")).removeData("changed")},val:function(h){var a=b.is("input")?"val":"text";0<arguments.length?(b[a](h),a=b):a=b[a]();return a},getMCharsBeforeCount:function(h,b){for(var a=0,c=0,d=e.length;c<d&&c<h;c++)f.translation[e.charAt(c)]||(h=b?h+1:h,a++);return a},caretPos:function(a,b,d,g){return f.translation[e.charAt(Math.min(a-1,e.length-1))]?Math.min(a+d-b-g,d):c.caretPos(a+1,b,d,g)},behaviour:function(a){a=
a||window.event;var b=a.keyCode||a.which;if(-1===d.inArray(b,f.byPassKeys)){var e=c.getCaret(),g=c.val(),q=g.length,k=e<q,r=c.getMasked(),l=r.length,n=c.getMCharsBeforeCount(l-1)-c.getMCharsBeforeCount(q-1);r!==g&&c.val(r);!k||65===b&&a.ctrlKey||(8!==b&&46!==b&&(e=c.caretPos(e,q,l,n)),c.setCaret(e));return c.callbacks(a)}},getMasked:function(b){var d=[],n=c.val(),g=0,q=e.length,k=0,r=n.length,l=1,m="push",u=-1,t,v;a.reverse?(m="unshift",l=-1,t=0,g=q-1,k=r-1,v=function(){return-1<g&&-1<k}):(t=q-1,
v=function(){return g<q&&k<r});for(;v();){var w=e.charAt(g),x=n.charAt(k),s=f.translation[w];if(s)x.match(s.pattern)?(d[m](x),s.recursive&&(-1===u?u=g:g===t&&(g=u-l),t===u&&(g-=l)),g+=l):s.optional?(g+=l,k-=l):s.fallback&&(d[m](s.fallback),g+=l),k+=l;else{if(!b)d[m](w);x===w&&(k+=l);g+=l}}b=e.charAt(t);q!==r+1||f.translation[b]||d.push(b);return d.join("")},callbacks:function(d){var f=c.val(),m=f!==n;if(!0===m&&"function"===typeof a.onChange)a.onChange(f,d,b,a);if(!0===m&&"function"===typeof a.onKeyPress)a.onKeyPress(f,
d,b,a);if("function"===typeof a.onComplete&&f.length===e.length)a.onComplete(f,d,b,a)}};f.mask=e;f.options=a;f.remove=function(){var a=c.getCaret();c.destroyEvents();c.val(f.getCleanVal());c.setCaret(a-c.getMCharsBeforeCount(a));return b};f.getCleanVal=function(){return c.getMasked(!0)};f.init=function(e){e=e||!1;a=a||{};f.byPassKeys=[9,16,17,18,36,37,38,39,40,91];f.translation={0:{pattern:/\d/},9:{pattern:/\d/,optional:!0},"#":{pattern:/\d/,recursive:!0},A:{pattern:/[a-zA-Z0-9]/},S:{pattern:/[a-zA-Z]/}};
f.translation=d.extend({},f.translation,a.translation);f=d.extend(!0,{},f,a);m=c.getRegexMask();!1===e?(a.placeholder&&b.attr("placeholder",a.placeholder),b.attr("autocomplete","off"),c.destroyEvents(),c.events(),e=c.getCaret(),c.val(c.getMasked()),c.setCaret(e+c.getMCharsBeforeCount(e,!0))):(c.events(),c.val(c.getMasked()))};f.init(!b.is("input"))},y={},A=function(){var b=d(this),e={},a=b.attr("data-mask");b.attr("data-mask-reverse")&&(e.reverse=!0);b.attr("data-mask-clearifnotmatch")&&(e.clearIfNotMatch=
!0);if(z(b,a,e))return b.data("mask",new m(this,a,e))},z=function(b,e,a){a=a||{};b=d(b).data("mask");var f=JSON.stringify;return"object"!==typeof b||f(b.options)!==f(a)||b.mask!==e};d.fn.mask=function(b,e){e=e||{};var a=this.selector,f=d.jMaskGlobals,n=function(){if(z(this,b,e))return d(this).data("mask",new m(this,b,e))};d(this).each(n);f.watchInputs&&a&&""!==a&&!y[a]&&(y[a]=!0,setInterval(function(){d(document).find(a).each(n)},300));f.dataMask&&d("*[data-mask]").each(A);f.watchDataMask&&setInterval(function(){d(document).find(f.nonInput).filter("*[data-mask]").each(A)},
300)};d.fn.unmask=function(){try{return this.each(function(){d(this).data("mask").remove().removeData("mask")})}catch(b){}};d.fn.cleanVal=function(){return this.data("mask").getCleanVal()};d.jMaskGlobals={nonInput:"td,span,div",dataMask:!0,watchInputs:!0,watchDataMask:!1}});