From f9b75ab2af8927fbc806059e9d31557755d83c38 Mon Sep 17 00:00:00 2001 From: Nikolay Poluhin Date: Fri, 16 Dec 2016 17:25:40 +0400 Subject: [PATCH] Fix #188 add timeout for fix caret pasition if click placeholder part before mask --- dist/mask.js | 13 +++++++++++-- dist/mask.min.js | 4 ++-- src/mask.js | 11 ++++++++++- 3 files changed, 23 insertions(+), 5 deletions(-) diff --git a/dist/mask.js b/dist/mask.js index b3d1adc..6310090 100644 --- a/dist/mask.js +++ b/dist/mask.js @@ -1,7 +1,7 @@ /*! * angular-ui-mask * https://github.com/angular-ui/ui-mask - * Version: 1.8.7 - 2016-07-26T15:59:07.992Z + * Version: 1.8.7 - 2016-12-16T13:23:58.004Z * License: MIT */ @@ -59,7 +59,7 @@ angular.module('ui.mask', []) return tempOptions; }]; }) - .directive('uiMask', ['uiMask.Config', function(maskConfig) { + .directive('uiMask', ['uiMask.Config', '$timeout', function(maskConfig, $timeout) { function isFocused (elem) { return elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex); } @@ -556,6 +556,8 @@ angular.module('ui.mask', []) function eventHandler(e) { /*jshint validthis: true */ + var self = this; + e = e || {}; // Allows more efficient minification var eventWhich = e.which, @@ -681,6 +683,13 @@ angular.module('ui.mask', []) } oldCaretPosition = caretPos; setCaretPosition(this, caretPos); + + $timeout(function() { + var caretPos = getCaretPosition(iElement[0]); + if(caretPos < caretPosMin) { + setCaretPosition(self, caretPosMin); + } + }, 305); } function isValidCaretPosition(pos) { diff --git a/dist/mask.min.js b/dist/mask.min.js index 4011858..3647224 100644 --- a/dist/mask.min.js +++ b/dist/mask.min.js @@ -1,7 +1,7 @@ /*! * angular-ui-mask * https://github.com/angular-ui/ui-mask - * Version: 1.8.7 - 2016-07-26T15:59:07.992Z + * Version: 1.8.7 - 2016-12-16T13:23:58.004Z * License: MIT */ -!function(){"use strict";angular.module("ui.mask",[]).value("uiMaskConfig",{maskDefinitions:{9:/\d/,A:/[a-zA-Z]/,"*":/[a-zA-Z0-9]/},clearOnBlur:!0,clearOnBlurPlaceholder:!1,escChar:"\\",eventsToHandle:["input","keyup","click","focus"],addDefaultPlaceholder:!0,allowInvalidValue:!1}).provider("uiMask.Config",function(){var e={};this.maskDefinitions=function(n){return e.maskDefinitions=n},this.clearOnBlur=function(n){return e.clearOnBlur=n},this.clearOnBlurPlaceholder=function(n){return e.clearOnBlurPlaceholder=n},this.eventsToHandle=function(n){return e.eventsToHandle=n},this.addDefaultPlaceholder=function(n){return e.addDefaultPlaceholder=n},this.allowInvalidValue=function(n){return e.allowInvalidValue=n},this.$get=["uiMaskConfig",function(n){var t=n;for(var a in e)angular.isObject(e[a])&&!angular.isArray(e[a])?angular.extend(t[a],e[a]):t[a]=e[a];return t}]}).directive("uiMask",["uiMask.Config",function(e){function n(e){return e===document.activeElement&&(!document.hasFocus||document.hasFocus())&&!!(e.type||e.href||~e.tabIndex)}return{priority:100,require:"ngModel",restrict:"A",compile:function(){var t=angular.copy(e);return function(e,a,i,r){function l(e){return angular.isDefined(e)?(w(e),K?(h(),d(),!0):f()):f()}function u(e){e&&(T=e,!K||0===a.val().length&&angular.isDefined(i.placeholder)||a.val(m(p(a.val()))))}function o(){return l(i.uiMask)}function c(e){return K?(j=p(e||""),R=g(j),r.$setValidity("mask",R),j.length&&(R||Q.allowInvalidValue)?m(j):void 0):e}function s(e){return K?(j=p(e||""),R=g(j),r.$viewValue=j.length?m(j):"",r.$setValidity("mask",R),R||Q.allowInvalidValue?J?r.$viewValue:j:void 0):e}function f(){return K=!1,v(),angular.isDefined(q)?a.attr("placeholder",q):a.removeAttr("placeholder"),angular.isDefined(W)?a.attr("maxlength",W):a.removeAttr("maxlength"),a.val(r.$modelValue),r.$viewValue=r.$modelValue,!1}function h(){j=F=p(r.$modelValue||""),H=_=m(j),R=g(j),i.maxlength&&a.attr("maxlength",2*S[S.length-1]),!q&&Q.addDefaultPlaceholder&&a.attr("placeholder",T);for(var e=r.$modelValue,n=r.$formatters.length;n--;)e=r.$formatters[n](e);r.$viewValue=e||"",r.$render()}function d(){Z||(a.bind("blur",y),a.bind("mousedown mouseup",V),a.bind("keydown",M),a.bind(Q.eventsToHandle.join(" "),O),Z=!0)}function v(){Z&&(a.unbind("blur",y),a.unbind("mousedown",V),a.unbind("mouseup",V),a.unbind("keydown",M),a.unbind("input",O),a.unbind("keyup",O),a.unbind("click",O),a.unbind("focus",O),Z=!1)}function g(e){return e.length?e.length>=I:!0}function p(e){var n,t,i="",r=a[0],l=A.slice(),u=L,o=u+C(r),c="";return e=e.toString(),n=0,t=e.length-T.length,angular.forEach(B,function(a){var i=a.position;i>=u&&o>i||(i>=u&&(i+=t),e.substring(i,i+a.value.length)===a.value&&(c+=e.slice(n,i),n=i+a.value.length))}),e=c+e.slice(n),angular.forEach(e.split(""),function(e){l.length&&l[0].test(e)&&(i+=e,l.shift())}),i}function m(e){var n="",t=S.slice();return angular.forEach(T.split(""),function(a,i){e.length&&i===t[0]?(n+=e.charAt(0)||"_",e=e.substr(1),t.shift()):n+=a}),n}function b(e){var n,t=angular.isDefined(i.uiMaskPlaceholder)?i.uiMaskPlaceholder:i.placeholder;return angular.isDefined(t)&&t[e]?t[e]:(n=angular.isDefined(i.uiMaskPlaceholderChar)&&i.uiMaskPlaceholderChar?i.uiMaskPlaceholderChar:"_","space"===n.toLowerCase()?" ":n[0])}function k(){var e,n,t=T.split("");S&&!isNaN(S[0])&&angular.forEach(S,function(e){t[e]="_"}),e=t.join(""),n=e.replace(/[_]+/g,"_").split("_"),n=n.filter(function(e){return""!==e});var a=0;return n.map(function(n){var t=e.indexOf(n,a);return a=t+1,{value:n,position:t}})}function w(e){var n=0;if(S=[],A=[],T="",angular.isString(e)){I=0;var t=!1,a=0,i=e.split(""),r=!1;angular.forEach(i,function(e,i){r?(r=!1,T+=e,n++):Q.escChar===e?r=!0:Q.maskDefinitions[e]?(S.push(n),T+=b(i-a),A.push(Q.maskDefinitions[e]),n++,t||I++,t=!1):"?"===e?(t=!0,a++):(T+=e,n++)})}S.push(S.slice().pop()+1),B=k(),K=S.length>1?!0:!1}function y(){if((Q.clearOnBlur||Q.clearOnBlurPlaceholder&&0===j.length&&i.placeholder)&&(L=0,N=0,R&&0!==j.length||(H="",a.val(""),e.$apply(function(){r.$pristine||r.$setViewValue("")}))),j!==U){var n=a.val(),t=""===j&&n&&angular.isDefined(i.uiMaskPlaceholderChar)&&"space"===i.uiMaskPlaceholderChar;t&&a.val(""),$(a[0]),t&&a.val(n)}U=j}function $(e){var n;if(angular.isFunction(window.Event)&&!e.fireEvent)try{n=new Event("change",{view:window,bubbles:!0,cancelable:!1})}catch(t){n=document.createEvent("HTMLEvents"),n.initEvent("change",!1,!0)}finally{e.dispatchEvent(n)}else"createEvent"in document?(n=document.createEvent("HTMLEvents"),n.initEvent("change",!1,!0),e.dispatchEvent(n)):e.fireEvent&&e.fireEvent("onchange")}function V(e){"mousedown"===e.type?a.bind("mouseout",E):a.unbind("mouseout",E)}function E(){N=C(this),a.unbind("mouseout",E)}function M(e){var n=8===e.which,t=P(this)-1||0,i=90===e.which&&e.ctrlKey;if(n){for(;t>=0;){if(D(t)){x(this,t+1);break}t--}z=-1===t}i&&(a.val(""),e.preventDefault())}function O(n){n=n||{};var t=n.which,i=n.type;if(16!==t&&91!==t){var l,u=a.val(),o=_,c=!1,s=p(u),f=F,h=P(this)||0,d=L||0,v=h-d,g=S[0],b=S[s.length]||S.slice().shift(),k=N||0,w=C(this)>0,y=k>0,$=u.length>o.length||k&&u.length>o.length-k,V=u.length=37&&40>=t&&n.shiftKey,M=37===t,O=8===t||"keyup"!==i&&V&&-1===v,A=46===t||"keyup"!==i&&V&&0===v&&!y,B=(M||O||"click"===i)&&h>g;if(N=C(this),!E&&(!w||"click"!==i&&"keyup"!==i&&"focus"!==i)){if(O&&z)return a.val(T),e.$apply(function(){r.$setViewValue("")}),void x(this,d);if("input"===i&&V&&!y&&s===f){for(;O&&h>g&&!D(h);)h--;for(;A&&b>h&&-1===S.indexOf(h);)h++;var I=S.indexOf(h);s=s.substring(0,I)+s.substring(I+1),s!==f&&(c=!0)}for(l=m(s),_=l,F=s,!c&&u.length>l.length&&(c=!0),a.val(l),c&&e.$apply(function(){r.$setViewValue(l)}),$&&g>=h&&(h=g+1),B&&h--,h=h>b?b:g>h?g:h;!D(h)&&h>g&&b>h;)h+=B?-1:1;(B&&b>h||$&&!D(d))&&h++,L=h,x(this,h)}}}function D(e){return S.indexOf(e)>-1}function P(e){if(!e)return 0;if(void 0!==e.selectionStart)return e.selectionStart;if(document.selection&&n(a[0])){e.focus();var t=document.selection.createRange();return t.moveStart("character",e.value?-e.value.length:0),t.text.length}return 0}function x(e,t){if(!e)return 0;if(0!==e.offsetWidth&&0!==e.offsetHeight)if(e.setSelectionRange)n(a[0])&&(e.focus(),e.setSelectionRange(t,t));else if(e.createTextRange){var i=e.createTextRange();i.collapse(!0),i.moveEnd("character",t),i.moveStart("character",t),i.select()}}function C(e){return e?void 0!==e.selectionStart?e.selectionEnd-e.selectionStart:window.getSelection?window.getSelection().toString().length:document.selection?document.selection.createRange().text.length:0:0}var S,A,T,B,I,j,H,R,_,F,L,N,z,K=!1,Z=!1,q=i.placeholder,W=i.maxlength,G=r.$isEmpty;r.$isEmpty=function(e){return G(K?p(e||""):e)};var J=!1;i.$observe("modelViewValue",function(e){"true"===e&&(J=!0)}),i.$observe("allowInvalidValue",function(e){Q.allowInvalidValue=""===e?!0:!!e,c(r.$modelValue)});var Q={};i.uiOptions?(Q=e.$eval("["+i.uiOptions+"]"),Q=angular.isObject(Q[0])?function(e,n){for(var t in e)Object.prototype.hasOwnProperty.call(e,t)&&(void 0===n[t]?n[t]=angular.copy(e[t]):angular.isObject(n[t])&&!angular.isArray(n[t])&&(n[t]=angular.extend({},e[t],n[t])));return n}(t,Q[0]):t):Q=t,i.$observe("uiMask",l),angular.isDefined(i.uiMaskPlaceholder)?i.$observe("uiMaskPlaceholder",u):i.$observe("placeholder",u),angular.isDefined(i.uiMaskPlaceholderChar)&&i.$observe("uiMaskPlaceholderChar",o),r.$formatters.unshift(c),r.$parsers.unshift(s);var U=a.val();a.bind("mousedown mouseup",V),Array.prototype.indexOf||(Array.prototype.indexOf=function(e){if(null===this)throw new TypeError;var n=Object(this),t=n.length>>>0;if(0===t)return-1;var a=0;if(arguments.length>1&&(a=Number(arguments[1]),a!==a?a=0:0!==a&&a!==1/0&&a!==-(1/0)&&(a=(a>0||-1)*Math.floor(Math.abs(a)))),a>=t)return-1;for(var i=a>=0?a:Math.max(t-Math.abs(a),0);t>i;i++)if(i in n&&n[i]===e)return i;return-1})}}}}])}(); \ No newline at end of file +!function(){"use strict";angular.module("ui.mask",[]).value("uiMaskConfig",{maskDefinitions:{9:/\d/,A:/[a-zA-Z]/,"*":/[a-zA-Z0-9]/},clearOnBlur:!0,clearOnBlurPlaceholder:!1,escChar:"\\",eventsToHandle:["input","keyup","click","focus"],addDefaultPlaceholder:!0,allowInvalidValue:!1}).provider("uiMask.Config",function(){var e={};this.maskDefinitions=function(n){return e.maskDefinitions=n},this.clearOnBlur=function(n){return e.clearOnBlur=n},this.clearOnBlurPlaceholder=function(n){return e.clearOnBlurPlaceholder=n},this.eventsToHandle=function(n){return e.eventsToHandle=n},this.addDefaultPlaceholder=function(n){return e.addDefaultPlaceholder=n},this.allowInvalidValue=function(n){return e.allowInvalidValue=n},this.$get=["uiMaskConfig",function(n){var t=n;for(var a in e)angular.isObject(e[a])&&!angular.isArray(e[a])?angular.extend(t[a],e[a]):t[a]=e[a];return t}]}).directive("uiMask",["uiMask.Config","$timeout",function(e,n){function t(e){return e===document.activeElement&&(!document.hasFocus||document.hasFocus())&&!!(e.type||e.href||~e.tabIndex)}return{priority:100,require:"ngModel",restrict:"A",compile:function(){var a=angular.copy(e);return function(e,i,r,l){function u(e){return angular.isDefined(e)?($(e),Z?(d(),v(),!0):h()):h()}function o(e){e&&(B=e,!Z||0===i.val().length&&angular.isDefined(r.placeholder)||i.val(b(m(i.val()))))}function c(){return u(r.uiMask)}function s(e){return Z?(H=m(e||""),_=p(H),l.$setValidity("mask",_),H.length&&(_||U.allowInvalidValue)?b(H):void 0):e}function f(e){return Z?(H=m(e||""),_=p(H),l.$viewValue=H.length?b(H):"",l.$setValidity("mask",_),_||U.allowInvalidValue?Q?l.$viewValue:H:void 0):e}function h(){return Z=!1,g(),angular.isDefined(W)?i.attr("placeholder",W):i.removeAttr("placeholder"),angular.isDefined(G)?i.attr("maxlength",G):i.removeAttr("maxlength"),i.val(l.$modelValue),l.$viewValue=l.$modelValue,!1}function d(){H=L=m(l.$modelValue||""),R=F=b(H),_=p(H),r.maxlength&&i.attr("maxlength",2*A[A.length-1]),!W&&U.addDefaultPlaceholder&&i.attr("placeholder",B);for(var e=l.$modelValue,n=l.$formatters.length;n--;)e=l.$formatters[n](e);l.$viewValue=e||"",l.$render()}function v(){q||(i.bind("blur",y),i.bind("mousedown mouseup",E),i.bind("keydown",O),i.bind(U.eventsToHandle.join(" "),D),q=!0)}function g(){q&&(i.unbind("blur",y),i.unbind("mousedown",E),i.unbind("mouseup",E),i.unbind("keydown",O),i.unbind("input",D),i.unbind("keyup",D),i.unbind("click",D),i.unbind("focus",D),q=!1)}function p(e){return e.length?e.length>=j:!0}function m(e){var n,t,a="",r=i[0],l=T.slice(),u=N,o=u+S(r),c="";return e=e.toString(),n=0,t=e.length-B.length,angular.forEach(I,function(a){var i=a.position;i>=u&&o>i||(i>=u&&(i+=t),e.substring(i,i+a.value.length)===a.value&&(c+=e.slice(n,i),n=i+a.value.length))}),e=c+e.slice(n),angular.forEach(e.split(""),function(e){l.length&&l[0].test(e)&&(a+=e,l.shift())}),a}function b(e){var n="",t=A.slice();return angular.forEach(B.split(""),function(a,i){e.length&&i===t[0]?(n+=e.charAt(0)||"_",e=e.substr(1),t.shift()):n+=a}),n}function k(e){var n,t=angular.isDefined(r.uiMaskPlaceholder)?r.uiMaskPlaceholder:r.placeholder;return angular.isDefined(t)&&t[e]?t[e]:(n=angular.isDefined(r.uiMaskPlaceholderChar)&&r.uiMaskPlaceholderChar?r.uiMaskPlaceholderChar:"_","space"===n.toLowerCase()?" ":n[0])}function w(){var e,n,t=B.split("");A&&!isNaN(A[0])&&angular.forEach(A,function(e){t[e]="_"}),e=t.join(""),n=e.replace(/[_]+/g,"_").split("_"),n=n.filter(function(e){return""!==e});var a=0;return n.map(function(n){var t=e.indexOf(n,a);return a=t+1,{value:n,position:t}})}function $(e){var n=0;if(A=[],T=[],B="",angular.isString(e)){j=0;var t=!1,a=0,i=e.split(""),r=!1;angular.forEach(i,function(e,i){r?(r=!1,B+=e,n++):U.escChar===e?r=!0:U.maskDefinitions[e]?(A.push(n),B+=k(i-a),T.push(U.maskDefinitions[e]),n++,t||j++,t=!1):"?"===e?(t=!0,a++):(B+=e,n++)})}A.push(A.slice().pop()+1),I=w(),Z=A.length>1?!0:!1}function y(){if((U.clearOnBlur||U.clearOnBlurPlaceholder&&0===H.length&&r.placeholder)&&(N=0,z=0,_&&0!==H.length||(R="",i.val(""),e.$apply(function(){l.$pristine||l.$setViewValue("")}))),H!==X){var n=i.val(),t=""===H&&n&&angular.isDefined(r.uiMaskPlaceholderChar)&&"space"===r.uiMaskPlaceholderChar;t&&i.val(""),V(i[0]),t&&i.val(n)}X=H}function V(e){var n;if(angular.isFunction(window.Event)&&!e.fireEvent)try{n=new Event("change",{view:window,bubbles:!0,cancelable:!1})}catch(t){n=document.createEvent("HTMLEvents"),n.initEvent("change",!1,!0)}finally{e.dispatchEvent(n)}else"createEvent"in document?(n=document.createEvent("HTMLEvents"),n.initEvent("change",!1,!0),e.dispatchEvent(n)):e.fireEvent&&e.fireEvent("onchange")}function E(e){"mousedown"===e.type?i.bind("mouseout",M):i.unbind("mouseout",M)}function M(){z=S(this),i.unbind("mouseout",M)}function O(e){var n=8===e.which,t=x(this)-1||0,a=90===e.which&&e.ctrlKey;if(n){for(;t>=0;){if(P(t)){C(this,t+1);break}t--}K=-1===t}a&&(i.val(""),e.preventDefault())}function D(t){var a=this;t=t||{};var r=t.which,u=t.type;if(16!==r&&91!==r){var o,c=i.val(),s=F,f=!1,h=m(c),d=L,v=x(this)||0,g=N||0,p=v-g,k=A[0],w=A[h.length]||A.slice().shift(),$=z||0,y=S(this)>0,V=$>0,E=c.length>s.length||$&&c.length>s.length-$,M=c.length=37&&40>=r&&t.shiftKey,D=37===r,T=8===r||"keyup"!==u&&M&&-1===p,I=46===r||"keyup"!==u&&M&&0===p&&!V,j=(D||T||"click"===u)&&v>k;if(z=S(this),!O&&(!y||"click"!==u&&"keyup"!==u&&"focus"!==u)){if(T&&K)return i.val(B),e.$apply(function(){l.$setViewValue("")}),void C(this,g);if("input"===u&&M&&!V&&h===d){for(;T&&v>k&&!P(v);)v--;for(;I&&w>v&&-1===A.indexOf(v);)v++;var H=A.indexOf(v);h=h.substring(0,H)+h.substring(H+1),h!==d&&(f=!0)}for(o=b(h),F=o,L=h,!f&&c.length>o.length&&(f=!0),i.val(o),f&&e.$apply(function(){l.$setViewValue(o)}),E&&k>=v&&(v=k+1),j&&v--,v=v>w?w:k>v?k:v;!P(v)&&v>k&&w>v;)v+=j?-1:1;(j&&w>v||E&&!P(g))&&v++,N=v,C(this,v),n(function(){var e=x(i[0]);k>e&&C(a,k)},305)}}}function P(e){return A.indexOf(e)>-1}function x(e){if(!e)return 0;if(void 0!==e.selectionStart)return e.selectionStart;if(document.selection&&t(i[0])){e.focus();var n=document.selection.createRange();return n.moveStart("character",e.value?-e.value.length:0),n.text.length}return 0}function C(e,n){if(!e)return 0;if(0!==e.offsetWidth&&0!==e.offsetHeight)if(e.setSelectionRange)t(i[0])&&(e.focus(),e.setSelectionRange(n,n));else if(e.createTextRange){var a=e.createTextRange();a.collapse(!0),a.moveEnd("character",n),a.moveStart("character",n),a.select()}}function S(e){return e?void 0!==e.selectionStart?e.selectionEnd-e.selectionStart:window.getSelection?window.getSelection().toString().length:document.selection?document.selection.createRange().text.length:0:0}var A,T,B,I,j,H,R,_,F,L,N,z,K,Z=!1,q=!1,W=r.placeholder,G=r.maxlength,J=l.$isEmpty;l.$isEmpty=function(e){return J(Z?m(e||""):e)};var Q=!1;r.$observe("modelViewValue",function(e){"true"===e&&(Q=!0)}),r.$observe("allowInvalidValue",function(e){U.allowInvalidValue=""===e?!0:!!e,s(l.$modelValue)});var U={};r.uiOptions?(U=e.$eval("["+r.uiOptions+"]"),U=angular.isObject(U[0])?function(e,n){for(var t in e)Object.prototype.hasOwnProperty.call(e,t)&&(void 0===n[t]?n[t]=angular.copy(e[t]):angular.isObject(n[t])&&!angular.isArray(n[t])&&(n[t]=angular.extend({},e[t],n[t])));return n}(a,U[0]):a):U=a,r.$observe("uiMask",u),angular.isDefined(r.uiMaskPlaceholder)?r.$observe("uiMaskPlaceholder",o):r.$observe("placeholder",o),angular.isDefined(r.uiMaskPlaceholderChar)&&r.$observe("uiMaskPlaceholderChar",c),l.$formatters.unshift(s),l.$parsers.unshift(f);var X=i.val();i.bind("mousedown mouseup",E),Array.prototype.indexOf||(Array.prototype.indexOf=function(e){if(null===this)throw new TypeError;var n=Object(this),t=n.length>>>0;if(0===t)return-1;var a=0;if(arguments.length>1&&(a=Number(arguments[1]),a!==a?a=0:0!==a&&a!==1/0&&a!==-(1/0)&&(a=(a>0||-1)*Math.floor(Math.abs(a)))),a>=t)return-1;for(var i=a>=0?a:Math.max(t-Math.abs(a),0);t>i;i++)if(i in n&&n[i]===e)return i;return-1})}}}}])}(); \ No newline at end of file diff --git a/src/mask.js b/src/mask.js index 1f738ab..6ad136f 100644 --- a/src/mask.js +++ b/src/mask.js @@ -49,7 +49,7 @@ angular.module('ui.mask', []) return tempOptions; }]; }) - .directive('uiMask', ['uiMask.Config', function(maskConfig) { + .directive('uiMask', ['uiMask.Config', '$timeout', function(maskConfig, $timeout) { function isFocused (elem) { return elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex); } @@ -546,6 +546,8 @@ angular.module('ui.mask', []) function eventHandler(e) { /*jshint validthis: true */ + var self = this; + e = e || {}; // Allows more efficient minification var eventWhich = e.which, @@ -671,6 +673,13 @@ angular.module('ui.mask', []) } oldCaretPosition = caretPos; setCaretPosition(this, caretPos); + + $timeout(function() { + var caretPos = getCaretPosition(iElement[0]); + if(caretPos < caretPosMin) { + setCaretPosition(self, caretPosMin); + } + }, 305); } function isValidCaretPosition(pos) {