jquery.inputmask.numeric.extensions.js 4.2 KB

123456789
  1. (function(h){h.extend(h.inputmask.defaults.aliases,{numeric:{mask:function(a){0!==a.repeat&&isNaN(a.integerDigits)&&(a.integerDigits=a.repeat);a.repeat=0;a.autoGroup=a.autoGroup&&""!=a.groupSeparator;if(a.autoGroup&&isFinite(a.integerDigits)){var c=Math.floor(a.integerDigits/a.groupSize);a.integerDigits+=0==a.integerDigits%a.groupSize?c-1:c}a.definitions[":"].placeholder=a.radixPoint;c=a.prefix;c=c+"[+]"+("~{1,"+a.integerDigits+"}");void 0!=a.digits&&(isNaN(a.digits)||0<parseInt(a.digits))&&(c=a.digitsOptional?
  2. c+("[:~{"+a.digits+"}]"):c+(":~{"+a.digits+"}"));return c+=a.suffix},placeholder:"",greedy:!1,digits:"*",digitsOptional:!0,groupSeparator:"",radixPoint:".",groupSize:3,autoGroup:!1,allowPlus:!0,allowMinus:!0,integerDigits:"+",prefix:"",suffix:"",skipRadixDance:!1,getLastValidPosition:function(a,c,b){var d=-1,f=a.validPositions,e;for(e in f)f=parseInt(e),f>d&&(d=f);void 0!=c&&(a=a.buffer,!1===b.skipRadixDance&&""!=b.radixPoint&&-1!=h.inArray(b.radixPoint,a)&&(d=h.inArray(b.radixPoint,a)));return d},
  3. rightAlign:!0,postFormat:function(a,c,b,d){var f=!1;if(""==d.groupSeparator||-1!=h.inArray(d.radixPoint,a)&&c>h.inArray(d.radixPoint,a))return{pos:c};var e=a.slice();b||e.splice(c,0,"?");e=e.join("");if(d.autoGroup||b&&-1!=e.indexOf(d.groupSeparator)){var g=h.inputmask.escapeRegex.call(this,d.groupSeparator),f=0==e.indexOf(d.groupSeparator),e=e.replace(RegExp(g,"g"),""),g=e.split(d.radixPoint),e=g[0];if(e!=d.prefix+"?0"&&e.length>d.groupSize+d.prefix.length)for(var f=!0,k=RegExp("([-+]?[\\d?]+)([\\d?]{"+
  4. d.groupSize+"})");k.test(e);)e=e.replace(k,"$1"+d.groupSeparator+"$2"),e=e.replace(d.groupSeparator+d.groupSeparator,d.groupSeparator);1<g.length&&(e+=d.radixPoint+g[1])}a.length=e.length;d=0;for(g=e.length;d<g;d++)a[d]=e.charAt(d);e=h.inArray("?",a);b||a.splice(e,1);return{pos:b?c:e,refreshFromBuffer:f}},onKeyDown:function(a,c,b){if(b.autoGroup&&(a.keyCode==b.keyCode.DELETE||a.keyCode==b.keyCode.BACKSPACE))return b.postFormat(c,0,!0,b)},onKeyPress:function(a,c,b){var d=a.which||a.charCode||a.keyCode;
  5. 46==d&&!1==a.shiftKey&&","==b.radixPoint&&(d=44);if(b.autoGroup&&String.fromCharCode(d)==b.radixPoint)return a=b.postFormat(c,0,!0,b),a.caret=h.inArray(b.radixPoint,c)+1,a},regex:{integerPart:function(a){return/[-+]?\d+/}},negationhandler:function(a,c,b,d,f){return!d&&f.allowMinus&&"-"===a&&(a=c.join("").match(f.regex.integerPart(f)),0<a.length)?"+"==c[a.index]?{pos:a.index,c:"-",remove:a.index,caret:b}:"-"==c[a.index]?{remove:a.index,caret:b-1}:{pos:a.index,c:"-",caret:b+1}:!1},definitions:{"~":{validator:function(a,
  6. c,b,d,f){var e=f.negationhandler(a,c.buffer,b,d,f);if(!e){e=d?RegExp("[0-9"+h.inputmask.escapeRegex.call(this,f.groupSeparator)+"]").test(a):/[0-9]/.test(a);!0===e&&(e={pos:b});if(!1!=e&&!d){var g=c.buffer.join("").match(f.regex.integerPart(f)),k=h.inArray(f.radixPoint,c.buffer);if(g)if(0==g["0"][0].indexOf("0")&&b>=f.prefix.length)-1==k||b<=k&&void 0==c.validPositions[k]?(c.buffer.splice(g.index,1),b=b>g.index?b-1:g.index,h.extend(e,{pos:b,remove:g.index})):b>g.index&&b<=k&&(c.buffer.splice(g.index,
  7. 1),b=b>g.index?b-1:g.index,h.extend(e,{pos:b,remove:g.index}));else if(a=b<=g.index)return!1;if(!1===f.digitsOptional&&b>k)return{pos:b,remove:b}}!1==e||d||a==f.radixPoint||!0!==f.autoGroup||(e=h.extend(e,f.postFormat(c.buffer,b,!1,f)))}return e},cardinality:1,prevalidator:null},"+":{validator:function(a,c,b,d,f){c="[";!0===f.allowMinus&&(c+="-");!0===f.allowPlus&&(c+="+");return RegExp(c+"]").test(a)},cardinality:1,prevalidator:null},":":{validator:function(a,c,b,d,f){c=f.negationhandler(a,c.buffer,
  8. b,d,f);c||(f="["+h.inputmask.escapeRegex.call(this,f.radixPoint)+"]",c=RegExp(f).test(a));return c},cardinality:1,prevalidator:null,placeholder:""}},insertMode:!0,autoUnmask:!1,onUnMask:function(a,c,b){a=a.replace(b.prefix,"");a=a.replace(b.suffix,"");a=a.replace(RegExp(b.groupSeparator,"g"),"");a=a.replace(b.radixPoint,".");return Number(a)},isComplete:function(a,c){var b=a.join("").replace(c.prefix,""),b=b.replace(c.suffix,""),b=b.replace(RegExp(c.groupSeparator,"g"),""),b=b.replace(c.radixPoint,
  9. ".");return isFinite(b)},onBeforeMask:function(a,c){return isFinite(a)?a.toString().replace(".",c.radixPoint):a}},decimal:{alias:"numeric"},integer:{alias:"numeric",digits:"0"}})})(jQuery);