ax5ui-formatter
Version:
A formatter plugin that works with Bootstrap & jQuery
3 lines (2 loc) • 10.1 kB
JavaScript
"use strict";!function(){var t=ax5.ui,e=ax5.util,n=void 0;t.addClass({className:"formatter"},function(){var t=(new Date,function(t,e){if("undefined"==typeof e&&(e=t.value.length),t.setSelectionRange)t.focus(),t.setSelectionRange(e,e);else if(t.createTextRange){var n=t.createTextRange();n.collapse(!0),n.moveEnd("character",e),n.moveStart("character",e),n.select()}else t.selectionStart&&(t.focus(),t.selectionStart=e,t.selectionEnd=e)});return function(){var r,a=this;this.instanceId=ax5.getGuid(),this.config={animateTime:250},this.queue=[],this.openTimer=null,this.closeTimer=null,r=this.config;var u={focus:function(t,e,n){t.$input.data("__originValue__")||t.$input.data("__originValue__",t.$input.val())},keydown:function(t,e,n){var r=!1;t.enterableKeyCodes&&(n.which&&t.enterableKeyCodes[n.which]||n.metaKey||n.ctrlKey||n.shiftKey||(r=!0)),r&&ax5.util.stopEvent(n)},keyup:function(e,r,a){var u,i,s,o,l,c=e.$input.get(0);"selectionStart"in c?u=c.selectionStart:document.selection&&(o=document.selection.createRange(),l=document.selection.createRange().text.length,o.moveStart("character",-c.value.length),u=o.text.length-l),i=c.value,s=e.pattern in n.formatter?n.formatter[e.pattern].getPatternValue.call(this,e,r,a,c.value):i,s!=i&&(e.$input.val(s).trigger("change"),t(c,u+s.length-i.length))},blur:function(t,e,r,a){var u,i,s=t.$input.get(0);t.$input.removeData("__originValue__"),u=s.value,i=t.pattern in n.formatter?n.formatter[t.pattern].getPatternValue.call(this,t,e,r,s.value,"blur"):u,a?t.$input.val(i):i!=u&&t.$input.val(i).trigger("change")}},i=function(t,e){if(!t.pattern&&("INPUT"==t.$target.get(0).tagName?t.pattern=t.$target.attr("data-ax5formatter"):t.pattern=t.$target.find('input[type="text"]').attr("data-ax5formatter"),!t.pattern))return console.log(ax5.info.getError("ax5formatter","501","bind")),console.log(t.target),this;var r=/[^\(^\))]+/gi,a=t.pattern.match(r);return t.pattern=a[0],t.patternArgument=a[1]||"",t.pattern in n.formatter&&(t.enterableKeyCodes=n.formatter[t.pattern].getEnterableKeyCodes.call(this,t,e)),t.$input.unbind("focus.ax5formatter").bind("focus.ax5formatter",u.focus.bind(this,this.queue[e],e)),t.$input.unbind("keydown.ax5formatter").bind("keydown.ax5formatter",u.keydown.bind(this,this.queue[e],e)),t.$input.unbind("keyup.ax5formatter").bind("keyup.ax5formatter",u.keyup.bind(this,this.queue[e],e)),t.$input.unbind("blur.ax5formatter").bind("blur.ax5formatter",u.blur.bind(this,this.queue[e],e)),u.blur.call(this,this.queue[e],e),this},s=function(t){return e.isString(t)||(t=jQuery(t).data("data-formatter")),e.search(this.queue,function(){return this.id==t})};this.init=function(){},this.bind=function(t){var n={},u=void 0;if(jQuery.extend(!0,n,r),t&&jQuery.extend(!0,n,t),t=n,!t.target)return console.log(ax5.info.getError("ax5formatter","401","bind")),this;if(t.$target=jQuery(t.target),"INPUT"==t.$target.get(0).tagName)t.$input=t.$target;else if(t.$input=t.$target.find('input[type="text"]'),t.$input.length>1)return t.$input.each(function(){t.target=this,a.bind(t)}),this;return t.$input="INPUT"==t.$target.get(0).tagName?t.$target:t.$target.find('input[type="text"]'),t.id||(t.id=t.$input.data("ax5-formatter")),t.id||(t.id="ax5-formatter-"+ax5.getGuid(),t.$input.data("ax5-formatter",t.id)),u=e.search(this.queue,function(){return this.id==t.id}),u===-1?(this.queue.push(t),i.call(this,this.queue[this.queue.length-1],this.queue.length-1)):(this.queue[u]=t,i.call(this,this.queue[u],u)),this},this.formatting=function(t){var n=e.isNumber(t)?t:s.call(this,t);if(n===-1)for(var r=this.queue.length;r--;)u.blur.call(this,this.queue[r],r,null,!0);else u.blur.call(this,this.queue[n],n,null,!0);return this},this.unbind=function(){},this.main=function(){arguments&&e.isObject(arguments[0])&&this.setConfig(arguments[0])}.apply(this,arguments)}}()),n=ax5.ui.formatter}(),function(){var t=ax5.ui.formatter,e=ax5.util,n=new Date,r={18:"KEY_ALT",8:"KEY_BACKSPACE",17:"KEY_CONTROL",46:"KEY_DELETE",40:"KEY_DOWN",35:"KEY_END",187:"KEY_EQUAL",27:"KEY_ESC",36:"KEY_HOME",45:"KEY_INSERT",37:"KEY_LEFT",189:"KEY_MINUS",34:"KEY_PAGEDOWN",33:"KEY_PAGEUP",13:"KEY_RETURN",39:"KEY_RIGHT",16:"KEY_SHIFT",9:"KEY_TAB",38:"KEY_UP",91:"KEY_WINDOW"},a={48:1,49:1,50:1,51:1,52:1,53:1,54:1,55:1,56:1,57:1,96:1,97:1,98:1,99:1,100:1,101:1,102:1,103:1,104:1,105:1},u={getEnterableKeyCodes:function(e){var n={188:","};return"int"==e.patternArgument||(n[190]="."),jQuery.extend(n,t.formatter.ctrlKeys,t.formatter.numKeys)},getPatternValue:function(t,n,r,a,u){a=a.replace(/[^0-9^\.^\-]/g,"");var i,s=new RegExp("([0-9])([0-9][0-9][0-9][,.])"),o=a.split(".");o[0]+=".";do o[0]=o[0].replace(s,"$1,$2");while(s.test(o[0]));return i=o.length>1?e.isNumber(t.maxRound)?o[0]+e.left(o[1],t.maxRound):o.join(""):o[0].split(".")[0]}},i={getEnterableKeyCodes:function(e){var n={190:".",110:"."};return jQuery.extend(n,t.formatter.ctrlKeys,t.formatter.numKeys)},getPatternValue:function(t,n,r,a,u){a=a.replace(/[^0-9^\.^\-]/g,"");var i,s=a.split(".");return s[0]+=".",i=s.length>1?e.isNumber(t.maxRound)?s[0]+e.left(s[1],t.maxRound):s.join(""):s[0].split(".")[0]}},s={getEnterableKeyCodes:function(e){var n={189:"-",191:"/"};return jQuery.extend(n,t.formatter.ctrlKeys,t.formatter.numKeys)},getPatternValue:function(t,r,a,u,i){if(u=u.replace(/\D/g,""),""==u)return u;var s=/^([0-9]{4})\-?([0-9]{1,2})?\-?([0-9]{1,2})?.*$/;"time"==t.patternArgument?s=/^([0-9]{4})\-?([0-9]{1,2})?\-?([0-9]{1,2})? ?([0-9]{1,2})?:?([0-9]{1,2})?:?([0-9]{1,2})?.*$/:"year"==t.patternArgument?s=/^([0-9]{0,4})?.*$/:"month"==t.patternArgument&&(s=/^([0-9]{4})\-?([0-9]{1,2})?.*$/);var o=u.match(s),l="",c=function(t,r,a,u){var i={Y:function(t){return"undefined"==typeof t&&(t=n.getFullYear()),""!=t&&"0000"!=t||(t=n.getFullYear()),t.length<4?e.setDigit(t,4):t},M:function(t){return"undefined"==typeof t&&(t=n.getMonth()+1),t>12?12:0==t?"01":e.setDigit(t,2)},D:function(t){"undefined"==typeof t&&(t=n.getDate()+1);var r=e.daysOfMonth(u[1],u[2]-1);return t>r?r:0==t?"01":e.setDigit(t,2)},h:function(t){return t||(t=0),t>23?23:e.setDigit(t,2)},m:function(t){return t||(t=0),t>59?59:e.setDigit(t,2)},s:function(t){return t||(t=0),t>59?59:e.setDigit(t,2)}};return a?i[r](t):t};return l=u.replace(s,function(e,n){var r=[];return"year"==t.patternArgument?r.push(c(arguments[1],"Y",i)):"month"==t.patternArgument?(r.push(c(arguments[1],"Y",i)),(arguments[2]||i)&&r.push("-"+c(arguments[2],"M",i))):"time"==t.patternArgument?(r.push(c(arguments[1],"Y",i)),(arguments[2]||i)&&r.push("-"+c(arguments[2],"M",i)),(arguments[3]||i)&&r.push("-"+c(arguments[3],"D",i,arguments)),(arguments[4]||i)&&r.push(" "+c(arguments[4],"h",i)),(arguments[5]||i)&&r.push(":"+c(arguments[5],"m",i)),(arguments[6]||i)&&r.push(":"+c(arguments[6],"s",i))):(r.push(c(arguments[1],"Y",i)),(arguments[2]||i)&&r.push("-"+c(arguments[2],"M",i)),(arguments[3]||i)&&r.push("-"+c(arguments[3],"D",i,arguments))),r.join("")}),"blur"!=i||o?o||(l=l.length>4?e.left(l,4):l):l=function(){var e=[];return"year"==t.patternArgument?e.push(c(0,"Y",i)):"month"==t.patternArgument?(e.push(c(0,"Y",i)),e.push("-"+c(0,"M",i))):"time"==t.patternArgument?(e.push(c(0,"Y",i)),e.push("-"+c(0,"M",i)),e.push("-"+c(0,"D",i,arguments)),e.push(" "+c(0,"h",i)),e.push(":"+c(0,"m",i)),e.push(":"+c(0,"s",i))):(e.push(c(0,"Y",i)),e.push("-"+c(0,"M",i)),e.push("-"+c(0,"D",i,arguments))),e.join("")}(),l}},o={getEnterableKeyCodes:function(e){var n={186:":"};return jQuery.extend(n,t.formatter.ctrlKeys,t.formatter.numKeys)},getPatternValue:function(t,n,r,a,u){a=a.replace(/\D/g,"");var i=/^([0-9]{1,2})?:?([0-9]{1,2})?:?([0-9]{1,2})?.*$/,s=a.match(i),o=a.replace(i,function(t,e){var n=[arguments[1]];return arguments[2]&&n.push(":"+arguments[2]),arguments[3]&&n.push(":"+arguments[3]),n.join("")});return s||(o=o.length>2?e.left(o,2):o),o}},l={getEnterableKeyCodes:function(e){var n={189:"-"};return jQuery.extend(n,t.formatter.ctrlKeys,t.formatter.numKeys)},getPatternValue:function(t,e,n,r,a){r=r.replace(/\D/g,"");var u=/^([0-9]{3})\-?([0-9]{1,2})?\-?([0-9]{1,5})?.*$/,i=r.replace(u,function(t,e){var n=[arguments[1]];return arguments[2]&&n.push(arguments[2]),arguments[3]&&n.push(arguments[3]),n.join("-")});return i}},c={getEnterableKeyCodes:function(e){var n={189:"-",188:","};return jQuery.extend(n,t.formatter.ctrlKeys,t.formatter.numKeys)},getPatternValue:function(t,e,n,r,a){r=r.replace(/\D/g,"");var u=/^([0-9]{3})\-?([0-9]{1,4})?\-?([0-9]{1,4})?\-?([0-9]{1,4})?\-?([0-9]{1,4})?/;"02"==r.substr(0,2)&&(u=/^([0-9]{2})\-?([0-9]{1,4})?\-?([0-9]{1,4})?\-?([0-9]{1,4})?\-?([0-9]{1,4})?/);var i=r.replace(u,function(t,e){var n=[arguments[1]];return arguments[2]&&n.push(arguments[2]),arguments[3]&&n.push(arguments[3]),arguments[4]&&n.push(arguments[4]),arguments[5]&&n.push(arguments[5]),n.join("-")});return i}},f={getEnterableKeyCodes:function(e){var n={189:"-"};return jQuery.extend(n,t.formatter.ctrlKeys,t.formatter.numKeys)},getPatternValue:function(t,e,n,r,a){r=r.replace(/\D/g,"").substring(0,16);var u=/^([0-9]{4})\-?([0-9]{4})?\-?([0-9]{4})?\-?([0-9]{4})?/,i=r.replace(u,function(t,e){var n=[arguments[1]];return arguments[2]&&n.push(arguments[2]),arguments[3]&&n.push(arguments[3]),arguments[4]&&n.push(arguments[4]),n.join("-")});return i}},h={getEnterableKeyCodes:function(t){return t.getEnterableKeyCodes?t.getEnterableKeyCodes.call(t,{$input:t.$input}):null},getPatternValue:function(t,e,n,r,a){if(t.getPatternValue)return t.getPatternValue.call(t,{event:n,$input:t.$input,value:r})}};t.formatter={ctrlKeys:r,numKeys:a,money:u,number:i,date:s,time:o,bizno:l,phone:c,credit:f,custom:h}}(),ax5.ui.formatter_instance=new ax5.ui.formatter,jQuery.fn.ax5formatter=function(){return function(t){if(ax5.util.isString(arguments[0])){var e=arguments[0];switch(e){case"formatting":return ax5.ui.formatter_instance.formatting(this);case"unbind":return ax5.ui.formatter_instance.unbind(this);default:return this}}else"undefined"==typeof t&&(t={}),jQuery.each(this,function(){var e={target:this};t=jQuery.extend({},t,e),ax5.ui.formatter_instance.bind(t)});return this}}();
//# sourceMappingURL=ax5formatter.min.js.map