jquery.inputmask.js 13 KB

123456789101112131415161718192021222324252627282930313233
  1. /*
  2. Input Mask plugin for jquery
  3. http://github.com/RobinHerbots/jquery.inputmask
  4. Copyright (c) 2010 - 2013 Robin Herbots
  5. Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php)
  6. Version: 2.3.50
  7. */
  8. (function(b){void 0===b.j.g&&(b.g={r:{placeholder:"_",f:{start:"[",end:"]"},Ua:{start:"{",end:"}"},Ia:{start:"(",end:")"},v:"\\",e:null,oncomplete:b.o,Sa:b.o,Ra:b.o,repeat:0,w:!0,p:!1,L:!0,Q:!0,Ea:!1,J:{},Pa:b.o,Oa:b.o,Ya:!0,Za:!0,Qa:b.o,U:" ",T:!1,l:!1,B:!1,Va:"",$a:!1,G:!0,u:{9:{m:"[0-9]",h:1},a:{m:"[A-Za-z\u0410-\u044f\u0401\u0451]",h:1},"*":{m:"[A-Za-z\u0410-\u044f\u0401\u04510-9]",h:1}},keyCode:{W:18,X:8,Y:20,Z:188,$:91,aa:91,ba:93,ca:17,da:46,ea:40,fa:35,ga:13,ha:27,ia:36,ja:45,ka:37,la:93,
  9. ma:107,na:110,oa:111,pa:108,qa:106,ra:109,sa:34,ta:33,ua:190,va:39,wa:16,xa:32,ya:9,za:38,Aa:91},Ka:[8,9,13,19,27,33,34,35,36,37,38,39,40,45,46,93,112,113,114,115,116,117,118,119,120,121,122,123],N:function(b,D,E,C){var t=b.length;D||("*"==E?t=C.length+1:1<E&&(t+=b.length*(E-1)));return t}},M:function(b){return b.replace(RegExp("(\\/|\\.|\\*|\\+|\\?|\\||\\(|\\)|\\[|\\]|\\{|\\}|\\\\)","gim"),"\\$1")}},b.j.g=function(v,D){function E(b){var c=document.createElement("input");b="on"+b;var d=b in c;d||
  10. (c.setAttribute(b,"return;"),d="function"==typeof c[b]);return d}function C(a,g){var d=c.J[a];return d?(d.n&&C(d.n),b.extend(!0,c,d),b.extend(!0,c,g),!0):!1}function t(a){c.l&&(a=a.split("").reverse().join(""));var g=!1,d=0,q=c.w,m=c.repeat;"*"==m&&(q=!1);!0==q&&""==c.placeholder&&(c.placeholder=" ");1==a.length&&!1==q&&(c.placeholder="");a=b.map(a.split(""),function(b){var f=[];if(b==c.v)g=!0;else if(b!=c.f.start&&b!=c.f.end||g){var a=c.u[b];if(a&&!g)for(b=0;b<a.h;b++)f.push(c.placeholder.charAt((d+
  11. b)%c.placeholder.length));else f.push(b),g=!1;d+=f.length;return f}});for(var f=a.slice(),J=1;J<m&&q;J++)f=f.concat(a.slice());return{mask:f,repeat:m,greedy:q}}function H(a){c.l&&(a=a.split("").reverse().join(""));var g=!1,d=!1,q=!1;return b.map(a.split(""),function(b){var f=[];if(b==c.v)d=!0;else{if(b!=c.f.start||d){if(b!=c.f.end||d){var a=c.u[b];if(a&&!d){for(var h=a.prevalidator,r=h?h.length:0,k=1;k<a.h;k++){var e=r>=k?h[k-1]:[],n=e.validator,e=e.cardinality;f.push({j:n?"string"==typeof n?RegExp(n):
  12. new function(){this.test=n}:/./,h:e?e:1,s:g,C:!0==g?q:!1,offset:0,q:a.casing,t:a.definitionSymbol||b});!0==g&&(q=!1)}f.push({j:a.m?"string"==typeof a.m?RegExp(a.m):new function(){this.test=a.m}:/./,h:a.h,s:g,C:q,offset:0,q:a.casing,t:a.definitionSymbol||b})}else f.push({j:null,h:0,s:g,C:q,offset:0,q:null,t:b}),d=!1;q=!1;return f}g=!1}else g=!0;q=!0}})}function G(){function a(b){var a=b.length;for(i=0;i<a&&b.charAt(i)!=c.f.start;i++);var d=[b.substring(0,i)];i<a&&d.push(b.substring(i+1,a));return d}
  13. function g(m,f,e){var h=0,r=0,k=f.length;for(i=0;i<k&&!(f.charAt(i)==c.f.start&&h++,f.charAt(i)==c.f.end&&r++,0<h&&h==r);i++);h=[f.substring(0,i)];i<k&&h.push(f.substring(i+1,k));r=a(h[0]);1<r.length?(f=m+r[0]+(c.f.start+r[1]+c.f.end)+(1<h.length?h[1]:""),-1==b.k(f,q)&&(q.push(f),k=t(f),d.push({mask:f,_buffer:k.mask,buffer:k.mask.slice(),tests:H(f),lastValidPosition:-1,greedy:k.greedy,repeat:k.repeat,metadata:e})),f=m+r[0]+(1<h.length?h[1]:""),-1==b.k(f,q)&&(q.push(f),k=t(f),d.push({mask:f,_buffer:k.mask,
  14. buffer:k.mask.slice(),tests:H(f),lastValidPosition:-1,greedy:k.greedy,repeat:k.repeat,metadata:e})),1<a(r[1]).length&&g(m+r[0],r[1]+h[1],e),1<h.length&&1<a(h[1]).length&&(g(m+r[0]+(c.f.start+r[1]+c.f.end),h[1],e),g(m+r[0],h[1],e))):(f=m+h,-1==b.k(f,q)&&(q.push(f),k=t(f),d.push({mask:f,_buffer:k.mask,buffer:k.mask.slice(),tests:H(f),lastValidPosition:-1,greedy:k.greedy,repeat:k.repeat,metadata:e})))}var d=[],q=[];b.La(c.e)&&(c.e=c.e.call(this,c));b.isArray(c.e)?b.c(c.e,function(b,a){void 0!=a.mask?
  15. g("",a.mask.toString(),a):g("",a.toString())}):g("",c.e.toString());return c.w?d:d.sort(function(b,a){return b.mask.length-a.mask.length})}function F(a,g){function d(){return a[g]}function e(){return d().tests}function m(){return d()._buffer}function f(){return d().buffer}function n(p,y){var w=!0;function l(b,a,p,d){for(var l=b%e().length,f=p?1:0,y="",w=a.buffer,g=a.tests[l].h;g>f;g--)y+=t(w,l-(g-1));p&&(y+=p);return null!=a.tests[l].j?a.tests[l].j.test(y,w,b,d,c):p==t(a._buffer,b,!0)||p==c.U?{refresh:!0,
  16. Da:t(a._buffer,b,!0),D:b}:!1}if(w=!0===w){var A=l(p,d(),y,w);!0===A&&(A={pos:p});return A}var m=[],A=!1,s=g,I=f().slice(),x=d().lastValidPosition,K=[];b.c(a,function(b,a){if("object"==typeof a){g=b;var c=p,e=d().lastValidPosition,u;if(e==x){if(1<c-x)for(e=-1==e?0:e;e<c&&(u=l(e,d(),I[e],!0),!1!==u);e++)v(f(),e,I[e]),!0===u&&(u={pos:e}),u=u.D||e,d().lastValidPosition<u&&(d().lastValidPosition=u);if(!h(c)&&!l(c,d(),y,w)){e=k(c)-c;for(u=0;u<e&&!1===l(++c,d(),y,w);u++);K.push(g)}}(d().lastValidPosition>=
  17. x||g==s)&&0<=c&&c<r()&&(A=l(c,d(),y,w),!1!==A&&(!0===A&&(A={pos:c}),u=A.D||c,d().lastValidPosition<u&&(d().lastValidPosition=u)),m.push({activeMasksetIndex:b,result:A}))}});g=s;return function(c,d){var e=!1;b.c(d,function(a,p){if(e=-1==b.k(p.activeMasksetIndex,c)&&!1!==p.result)return!1});if(e)d=b.map(d,function(p){if(-1==b.k(p.activeMasksetIndex,c))return p;a[p.activeMasksetIndex].lastValidPosition=x});else{var f=-1,w=-1;b.c(d,function(a,p){-1!=b.k(p.activeMasksetIndex,c)&&!1!==p.result&(-1==f||
  18. f>p.result.pos)&&(f=p.result.pos,w=p.activeMasksetIndex)});d=b.map(d,function(d){if(-1!=b.k(d.activeMasksetIndex,c)){if(d.result.pos==f)return d;if(!1!==d.result){for(var e=p;e<f&&(rsltValid=l(e,a[d.activeMasksetIndex],a[w].buffer[e],!0),!1!==rsltValid);e++)v(a[d.activeMasksetIndex].buffer,e,a[w].buffer[e]),a[d.activeMasksetIndex].lastValidPosition=e;rsltValid=l(f,a[d.activeMasksetIndex],y,!0);!1!==rsltValid&&(v(a[d.activeMasksetIndex].buffer,f,y),a[d.activeMasksetIndex].lastValidPosition=f);return d}}})}return d}(K,
  19. m)}function h(b){b=e()[b%e().length];return void 0!=b?b.j:!1}function r(){return c.N(m(),d().greedy,d().repeat,f(),c)}function k(b){var a=r();if(b>=a)return a;for(;++b<a&&!h(b););return b}function v(b,a,c){a=z(b,a);var d=e()[a%e().length],f=c;if(void 0!=f)switch(d.q){case "upper":f=c.toUpperCase();break;case "lower":f=c.toLowerCase()}b[a]=f}function t(b,a,c){c&&(a=z(b,a));return b[a]}function z(b,a){for(var c;void 0==b[a]&&b.length<r();)for(c=0;void 0!==m()[c];)b.push(m()[c++]);return a}function C(c){var e=
  20. E(c.b()).split("");b.c(a,function(b,a){"object"==typeof a&&(a.buffer=a._buffer.slice(),a.lastValidPosition=-1)});g=0;c.d("");b.c(e,function(a,e){var f=d().lastValidPosition,g=-1==f?a:k(f);(e!=t(m().slice(),a,!0)||h(a))&&-1==b.k(e,m().slice(f+1,g))&&b(c).ab("_keypress",[!0,e.charCodeAt(0),!0,!1,a])})}function D(a){return b.g.M.call(this,a)}function E(b){return b.replace(RegExp("("+D(m().join(""))+")*$"),"")}function F(b){var a=f(),c=a.slice(),d,g;for(g=c.length-1;0<=g;g--)if(d=g%e().length,e()[d].s)if(h(g)&&
  21. n(g,a[g]))break;else c.pop();else break;b.d(c.join(""))}function H(a,c){if(!e()||!0!==c&&a.Ja("hasDatepicker"))return a[0].b();var d=b.map(f(),function(b,a){return h(a)&&n(a,b)?b:null});return(B?d.reverse():d).join("")}function G(b){B&&"number"==typeof b&&(b=f().length-b);return b}function M(a,d){var e,f=a.Ma&&0<a.length?a[0]:a;"number"==typeof d?(d=G(d),e=G(e),b(a).A(":visible")&&(e="number"==typeof e?e:d,!1==c.Q&&d==e&&e++,f.setSelectionRange?(f.selectionStart=d,f.selectionEnd=L?d:e):f.createTextRange&&
  22. (f=f.createTextRange(),f.collapse(!0),f.moveEnd("character",e),f.moveStart("character",d),f.select()))):b(a).A(":visible")&&!f.setSelectionRange&&document.selection&&document.selection.createRange&&(f=document.selection.createRange(),f.duplicate().moveStart("character",-1E5))}function N(d){var f=!1,k=0,l=g;b.c(a,function(b,a){if("object"==typeof a){g=b;var l;l=r();if(0>=l)l=0;else for(;0<--l&&!h(l););if(a.lastValidPosition>=k&&a.lastValidPosition==l){for(var I=!0,x=0;x<=l;x++){var n=h(x),s=x%e().length;
  23. if(n&&(void 0==d[x]||d[x]==c.placeholder.charAt(x%c.placeholder.length))||!n&&d[x]!=m()[s]){I=!1;break}}if(f=f||I)return!1}k=a.lastValidPosition}});g=l;return f}var B=!1,s;this.I=function(b,a){B=b.data("_inputmask").isRTL;return H(b,a)};this.R=function(b){return N(b)};this.e=function(e){function h(a){a=b.Ba(a).Ha;b.c(a,function(a,c){b.c(c,function(b,a){if("inputmask"==a.Na&&"setvalue"!=a.type&&"_keypress"!=a.type){var c=a.O;a.O=function(b){if(this.readOnly||this.disabled)b.preventDefault;else return c.apply(this,
  24. arguments)}}})})}function n(a){var c;Object.getOwnPropertyDescriptor&&(c=Object.getOwnPropertyDescriptor(a,"value"));if(c&&c.get){if(!a.b){var d=c.get,e=c.set;a.b=function(){return B?d.call(this).split("").reverse().join(""):d.call(this)};a.d=function(a){e.call(this,B?a.split("").reverse().join(""):a)};Object.defineProperty(a,"value",{get:function(){var a=b(this),c=b(this).data("_inputmask"),e=c.masksets,f=c.activeMasksetIndex;return c&&c.opts.p?a.g("unmaskedvalue"):d.call(this)!=e[f]._buffer.join("")?
  25. d.call(this):""},set:function(a){e.call(this,a);b(this).H("setvalue.inputmask")}})}}else if(document.__lookupGetter__&&a.__lookupGetter__("value"))a.b||(d=a.__lookupGetter__("value"),e=a.__lookupSetter__("value"),a.b=function(){return B?d.call(this).split("").reverse().join(""):d.call(this)},a.d=function(a){e.call(this,B?a.split("").reverse().join(""):a)},a.__defineGetter__("value",function(){var a=b(this),c=b(this).data("_inputmask"),e=c.masksets,f=c.activeMasksetIndex;return c&&c.opts.p?a.g("unmaskedvalue"):
  26. d.call(this)!=e[f]._buffer.join("")?d.call(this):""}),a.__defineSetter__("value",function(a){e.call(this,a);b(this).H("setvalue.inputmask")}));else if(a.b||(a.b=function(){return B?this.value.split("").reverse().join(""):this.value},a.d=function(a){this.value=B?a.split("").reverse().join(""):a}),void 0==b.i.text||!0!=b.i.text.P)d=b.i.text&&b.i.text.get?b.i.text.get:function(){return this.value},e=b.i.text&&b.i.text.set?b.i.text.set:function(a){return this.value=a},jQuery.extend(b.i,{text:{get:function(a){var c=
  27. b(a);if(c.data("_inputmask")){if(c.data("_inputmask").opts.p)return c.g("unmaskedvalue");a=d.call(a);c=c.data("_inputmask");return a!=c.masksets[c.activeMasksetIndex]._buffer.join("")?a:""}return d.call(a)},set:function(a,c){var d=b(a),f=e.call(a,c);d.data("_inputmask")&&d.H("setvalue.inputmask");return f},P:!0}})}s=b(e);if(s.A(":input")){s.data("_inputmask",{masksets:a,activeMasksetIndex:g,opts:c,isRTL:!1});c.T&&s.F("title",d().mask);d().greedy=d().greedy?d().greedy:0==d().repeat;if(null!=s.K("maxLength")){var l=
  28. s.F("maxLength");-1<l&&b.c(a,function(a,b){"object"==typeof b&&"*"==b.repeat&&(b.repeat=l)});r()>l&&-1<l&&(l<m().length&&(m().length=l),!1==d().greedy&&(d().repeat=Math.round(l/m().length)),s.F("maxLength",2*r()))}n(e);c.l&&(c.B=c.l);("rtl"==e.dir||c.l&&c.G||c.B&&c.G)&&s.Ga("text-align","right");if("rtl"==e.dir||c.l){e.dir="ltr";s.Wa("dir");var q=s.data("_inputmask");q.isRTL=!0;s.data("_inputmask",q);B=!0}s.V(".inputmask");s.S("focus.inputmask");s.Fa("form");C(e);var t;try{t=document.activeElement}catch(v){}t===
  29. e?(s.Ca("focus.inputmask"),M(e,k(d().lastValidPosition))):c.L?f().join("")==m().join("")?e.d(""):F(e):e.d(f().join(""));h(e)}};return this}var c=b.extend(!0,{},b.g.r,D);navigator.userAgent.match(/iphone/i);var L=null!==navigator.userAgent.match(/android.*safari.*/i);E("paste")||E("input");var e,n=0;if(L){var z=navigator.userAgent.match(/safari.*/i);RegExp(/[0-9]+/).exec(z)}if("string"===typeof v)switch(v){case "mask":return C(c.n,D),e=G(),this.c(function(){F(b.extend(!0,{},e),0).e(this)});case "unmaskedvalue":return z=
  30. b(this),z.data("_inputmask")?(e=z.data("_inputmask").masksets,n=z.data("_inputmask").activeMasksetIndex,c=z.data("_inputmask").opts,F(e,n).I(z)):z.bb();case "remove":return this.c(function(){var a=b(this);if(a.data("_inputmask")){e=a.data("_inputmask").masksets;n=a.data("_inputmask").activeMasksetIndex;c=a.data("_inputmask").opts;this.d(F(e,n).I(a,!0));a.Xa("_inputmask");a.V(".inputmask");a.S("focus.inputmask");var g;Object.getOwnPropertyDescriptor&&(g=Object.getOwnPropertyDescriptor(this,"value"));
  31. g&&g.get?this.b&&Object.defineProperty(this,"value",{get:this.b,set:this.d}):document.__lookupGetter__&&this.__lookupGetter__("value")&&this.b&&(this.__defineGetter__("value",this.b),this.__defineSetter__("value",this.d));try{delete this.b,delete this.d}catch(d){this.d=this.b=void 0}}});case "getemptymask":return this.data("_inputmask")?(e=this.data("_inputmask").masksets,n=this.data("_inputmask").activeMasksetIndex,e[n]._buffer.join("")):"";case "hasMaskedValue":return this.data("_inputmask")?!this.data("_inputmask").opts.p:
  32. !1;case "isComplete":return e=this.data("_inputmask").masksets,n=this.data("_inputmask").activeMasksetIndex,c=this.data("_inputmask").opts,F(e,n).R(this[0].b().split(""));case "getmetadata":if(this.data("_inputmask"))return e=this.data("_inputmask").masksets,n=this.data("_inputmask").activeMasksetIndex,e[n].metadata;return;default:return C(v,D)||(c.e=v),e=G(),this.c(function(){F(b.extend(!0,{},e),n).e(this)})}else{if("object"==typeof v)return c=b.extend(!0,{},b.g.r,v),C(c.n,v),e=G(),this.c(function(){F(b.extend(!0,
  33. {},e),n).e(this)});if(void 0==v)return this.c(function(){var a=b(this).K("data-inputmask");if(a&&""!=a)try{var a=a.replace(RegExp("'","g"),'"'),e=b.Ta("{"+a+"}");b.extend(!0,e,D);c=b.extend(!0,{},b.g.r,e);C(c.n,e);c.n=void 0;b(this).g(c)}catch(d){}})}return this})})(jQuery);