-
Notifications
You must be signed in to change notification settings - Fork 7
Expand file tree
/
Copy pathjquery.maskinput.min.js
More file actions
6 lines (6 loc) · 3.29 KB
/
jquery.maskinput.min.js
File metadata and controls
6 lines (6 loc) · 3.29 KB
1
2
3
4
5
6
/*
Mask Input plugin for jQuery
Licensed under the MIT license (https://github.com/shaungrady/jquery-mask-input/blob/master/LICENSE)
Version: 1.5
*/
!function(a,b,c,d){function f(a){if(a.selectionStart!==d)return a.selectionStart;if(c.selection){a.focus();var b=c.selection.createRange();return b.moveStart("character",-a.value.length),b.text.length}}function g(a,b){if(a.setSelectionRange)a.focus(),a.setSelectionRange(b,b);else if(a.createTextRange){var c=a.createTextRange();c.collapse(!0),c.moveEnd("character",b),c.moveStart("character",b),c.select()}}function h(a){return a.selectionStart!==d?a.selectionEnd-a.selectionStart:c.selection?c.selection.createRange().text.length:void 0}var e={9:/\d/,A:/[a-zA-Z]/,"*":/[a-zA-Z0-9]/};a.fn.extend({maskInput:function(b,c,i){return this.length?(i=i||a.noop,c=c||a.noop,this.filter("input").each(function(j,k){function r(b){return a.inArray(b,n)>-1}function s(b){var c="",d=o.slice();return a.each(b.split(""),function(a,b){d.length&&d[0].test(b)&&(c+=b,d.shift())}),c}function t(b){var c="",d=n.slice();return a.each(p.split(""),function(a,e){b.length&&a===d[0]?(c+=b.charAt(0)||"_",b=b.substr(1),d.shift()):c+=e}),c}function u(b){var c=a(this);c.data("isUnmaskedValueValid")||(c.val(""),c.attr("value-unmasked","")),c.data("caretPositionPreinput",0),c.data("selectionLengthPreinput",0)}function v(b){var d=b.which,e=b.type;if(16==d||91==d)return!0;var m,j=a(this),k=j.val(),l=j.data("valuePreinput")||"",o=s(k),q=j.attr("value-unmasked")||"",u=!1,w=f(this)||0,x=j.data("caretPositionPreinput")||0,y=w-x,z=n[0],A=n[o.length]||n.slice().pop()+1,B=h(this),C=j.data("selectionLengthPreinput")||0,D=B>0,E=C>0,F=k.length>l.length||C&&k.length>l.length-C,G=k.length<l.length||C&&k.length==l.length-C,H=d>=37&&d<=40&&b.shiftKey,I=37==d,J=8==d||"keyup"!=e&&G&&y===-1,K=46==d||"keyup"!=e&&G&&0===y&&!E,L=(I||J||"click"==e)&&w>z;if(0==c({value:s(k),maskedValue:k,lastChar:s(k).substring(s(k).length-1,s(k).length),inputElement:j}))return j.val(t(q)),!0;if(j.data("selectionLengthPreinput",B),j.unbind("mouseout.mask").one("mouseout.mask",v),"mouseout"==e||H||D&&("click"==e||"keyup"==e))return!0;if(("input"==e||"propertychange"==e)&&G&&!E&&o===q){for(;J&&w>0&&!r(w);)w--;for(;K&&w<p.length&&a.inArray(w,n)==-1;)w++;var M=a.inArray(w,n);o=o.substring(0,M)+o.substring(M+1)}for(u=o.length===n.length-1,j.attr("value-unmasked",o),j.data("isUnmaskedValueValid",u),m=t(o),j.data("valuePreinput",m),j.val(m),F&&w<=z&&(w=z+1),L&&w--,w=w>A?A:w<z?z:w;!r(w)&&w>z&&w<A;)w+=L?-1:1;(L&&w<A||F&&!r(x))&&w++,j.data("caretPositionPreinput",w),g(this,w),"input"!=b.type&&i({isValid:u,value:o,maskedValue:m,inputElement:j})}var l=a(k),m=l.attr("mask")||b,n=[],o=[],p="",q=0;return m===d||(m instanceof Array?a.each(m,function(b,c){c instanceof RegExp?(n.push(q++),p+="_",o.push(c)):"string"==typeof c&&a.each(c.split(""),function(a,b){p+=b,q++})}):a.each(m.split(""),function(a,b){e[b]?(n.push(q),p+="_",o.push(e[b])):p+=b,q++}),n.length?(n.push(q),function(a){var b=s(a.val()),c=t(b),d=b.length===n.length-1,e=a.attr("maxlength");a.val(c),a.attr("value-unmasked",b),a.data("isUnmaskedValueValid",d),e&&a.attr("maxlength",parseInt(e,10)+1)}(l),l.attr("placeholder",p),l.unbind(".mask"),l.bind("blur.mask",u).triggerHandler("blur"),void l.bind("input propertychange.mask keyup.mask focus.mask",v)):this)})):this}})}(jQuery,window,document);