UNPKG

ax5ui-formatter

Version:

A formatter plugin that works with Bootstrap & jQuery

352 lines (320 loc) 14.1 kB
// ax5.ui.formatter.formatter (function () { var FORMATTER = ax5.ui.formatter; var U = ax5.util; var TODAY = new Date(); var ctrlKeys = { "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", // "190": "KEY_PERIOD", "13": "KEY_RETURN", "39": "KEY_RIGHT", "16": "KEY_SHIFT", // "32": "KEY_SPACE", "9": "KEY_TAB", "38": "KEY_UP", "91": "KEY_WINDOW" //"107" : "NUMPAD_ADD", //"194" : "NUMPAD_COMMA", //"110" : "NUMPAD_DECIMAL", //"111" : "NUMPAD_DIVIDE", //"12" : "NUMPAD_EQUAL", //"106" : "NUMPAD_MULTIPLY", //"109" : "NUMPAD_SUBTRACT" }; var numKeys = { '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 }; var pattern_money = { getEnterableKeyCodes: function (_opts) { var enterableKeyCodes = { '188': ',' }; if (_opts.patternArgument == "int") { // 소수점 입력 안됨 } else { enterableKeyCodes['190'] = "."; // 소수점 입력 허용 } return jQuery.extend(enterableKeyCodes, FORMATTER.formatter.ctrlKeys, FORMATTER.formatter.numKeys); }, getPatternValue: function (_opts, optIdx, e, val, eType) { val = val.replace(/[^0-9^\.^\-]/g, ""); var regExpPattern = new RegExp('([0-9])([0-9][0-9][0-9][,.])'), arrNumber = val.split('.'), returnValue; arrNumber[0] += '.'; do { arrNumber[0] = arrNumber[0].replace(regExpPattern, '$1,$2'); } while (regExpPattern.test(arrNumber[0])); if (arrNumber.length > 1) { if (U.isNumber(_opts.maxRound)) { returnValue = arrNumber[0] + U.left(arrNumber[1], _opts.maxRound); } else { returnValue = arrNumber.join(''); } } else { returnValue = arrNumber[0].split('.')[0]; } return returnValue; } }; var pattern_number = { getEnterableKeyCodes: function getEnterableKeyCodes(_opts) { var enterableKeyCodes = { '190': '.', '110': '.' }; return jQuery.extend(enterableKeyCodes, FORMATTER.formatter.ctrlKeys, FORMATTER.formatter.numKeys); }, getPatternValue: function (_opts, optIdx, e, val, eType) { val = val.replace(/[^0-9^\.^\-]/g, ""); var arrNumber = val.split('.'), returnValue ; arrNumber[0] += "."; if (arrNumber.length > 1) { if (U.isNumber(_opts.maxRound)) { returnValue = arrNumber[0] + U.left(arrNumber[1], _opts.maxRound); } else { returnValue = arrNumber.join(''); } } else { returnValue = arrNumber[0].split('.')[0]; } return returnValue; } }; var pattern_date = { getEnterableKeyCodes: function (_opts) { var enterableKeyCodes = { '189': '-', '191': '/' }; return jQuery.extend(enterableKeyCodes, FORMATTER.formatter.ctrlKeys, FORMATTER.formatter.numKeys); }, getPatternValue: function (_opts, optIdx, e, val, eType) { val = val.replace(/\D/g, ""); if (val == "") return val; var regExpPattern = /^([0-9]{4})\-?([0-9]{1,2})?\-?([0-9]{1,2})?.*$/; if (_opts.patternArgument == "time") { regExpPattern = /^([0-9]{4})\-?([0-9]{1,2})?\-?([0-9]{1,2})? ?([0-9]{1,2})?:?([0-9]{1,2})?:?([0-9]{1,2})?.*$/; }else if(_opts.patternArgument == "year"){ regExpPattern = /^([0-9]{0,4})?.*$/; }else if(_opts.patternArgument == "month"){ regExpPattern = /^([0-9]{4})\-?([0-9]{1,2})?.*$/; } var matchedPattern = val.match(regExpPattern), returnValue = "", inspectValue = function (val, format, inspect, data) { var _val = { 'Y': function (v) { if (typeof v == "undefined") v = TODAY.getFullYear(); if (v == '' || v == '0000') v = TODAY.getFullYear(); return (v.length < 4) ? U.setDigit(v, 4) : v; }, 'M': function (v) { if (typeof v == "undefined") v = TODAY.getMonth() + 1; return v > 12 ? 12 : v == 0 ? '01' : U.setDigit(v, 2); }, 'D': function (v) { if (typeof v == "undefined") v = TODAY.getDate() + 1; var dLen = U.daysOfMonth(data[1], data[2] - 1); return v > dLen ? dLen : v == 0 ? '01' : U.setDigit(v, 2); }, 'h': function (v) { if (!v) v = 0; return v > 23 ? 23 : U.setDigit(v, 2); }, 'm': function (v) { if (!v) v = 0; return v > 59 ? 59 : U.setDigit(v, 2); }, 's': function (v) { if (!v) v = 0; return v > 59 ? 59 : U.setDigit(v, 2); } }; return (inspect) ? _val[format](val) : val; }; returnValue = val.replace(regExpPattern, function (a, b) { var nval = []; if (_opts.patternArgument == "year") { nval.push(inspectValue(arguments[1], "Y", eType)); } else if (_opts.patternArgument == "month") { nval.push(inspectValue(arguments[1], "Y", eType)); if (arguments[2] || eType) nval.push('-' + inspectValue(arguments[2], "M", eType)); } else if (_opts.patternArgument == "time") { nval.push(inspectValue(arguments[1], "Y", eType)); if (arguments[2] || eType) nval.push('-' + inspectValue(arguments[2], "M", eType)); if (arguments[3] || eType) nval.push('-' + inspectValue(arguments[3], "D", eType, arguments)); if (arguments[4] || eType) nval.push(' ' + inspectValue(arguments[4], "h", eType)); if (arguments[5] || eType) nval.push(':' + inspectValue(arguments[5], "m", eType)); if (arguments[6] || eType) nval.push(':' + inspectValue(arguments[6], "s", eType)); } else{ nval.push(inspectValue(arguments[1], "Y", eType)); if (arguments[2] || eType) nval.push('-' + inspectValue(arguments[2], "M", eType)); if (arguments[3] || eType) nval.push('-' + inspectValue(arguments[3], "D", eType, arguments)); } return nval.join(''); }); if (eType == 'blur' && !matchedPattern) { returnValue = (function () { var nval = []; if (_opts.patternArgument == "year") { nval.push(inspectValue(0, "Y", eType)); } else if (_opts.patternArgument == "month") { nval.push(inspectValue(0, "Y", eType)); nval.push('-' + inspectValue(0, "M", eType)); } else if (_opts.patternArgument == "time") { nval.push(inspectValue(0, "Y", eType)); nval.push('-' + inspectValue(0, "M", eType)); nval.push('-' + inspectValue(0, "D", eType, arguments)); nval.push(' ' + inspectValue(0, "h", eType)); nval.push(':' + inspectValue(0, "m", eType)); nval.push(':' + inspectValue(0, "s", eType)); }else{ nval.push(inspectValue(0, "Y", eType)); nval.push('-' + inspectValue(0, "M", eType)); nval.push('-' + inspectValue(0, "D", eType, arguments)); } return nval.join(''); })(); } else if (!matchedPattern) returnValue = (returnValue.length > 4) ? U.left(returnValue, 4) : returnValue; return returnValue; } }; var pattern_time = { getEnterableKeyCodes: function (_opts) { var enterableKeyCodes = { '186': ':' }; return jQuery.extend(enterableKeyCodes, FORMATTER.formatter.ctrlKeys, FORMATTER.formatter.numKeys); }, getPatternValue: function (_opts, optIdx, e, val, eType) { val = val.replace(/\D/g, ""); var regExpPattern = /^([0-9]{1,2})?:?([0-9]{1,2})?:?([0-9]{1,2})?.*$/; var matchedPattern = val.match(regExpPattern), returnValue = val.replace(regExpPattern, function (a, b) { var nval = [arguments[1]]; if (arguments[2]) nval.push(':' + arguments[2]); if (arguments[3]) nval.push(':' + arguments[3]); return nval.join(''); }); if (!matchedPattern) returnValue = (returnValue.length > 2) ? U.left(returnValue, 2) : returnValue; return returnValue; } }; var pattern_bizno = { getEnterableKeyCodes: function (_opts) { var enterableKeyCodes = { '189': '-' }; return jQuery.extend(enterableKeyCodes, FORMATTER.formatter.ctrlKeys, FORMATTER.formatter.numKeys); }, getPatternValue: function (_opts, optIdx, e, val, eType) { val = val.replace(/\D/g, ""); var regExpPattern = /^([0-9]{3})\-?([0-9]{1,2})?\-?([0-9]{1,5})?.*$/, returnValue = val.replace(regExpPattern, function (a, b) { var nval = [arguments[1]]; if (arguments[2]) nval.push(arguments[2]); if (arguments[3]) nval.push(arguments[3]); return nval.join("-"); }); return returnValue; } }; var pattern_phone = { getEnterableKeyCodes: function (_opts) { var enterableKeyCodes = { '189': '-', '188': ',' }; return jQuery.extend(enterableKeyCodes, FORMATTER.formatter.ctrlKeys, FORMATTER.formatter.numKeys); }, getPatternValue: function (_opts, optIdx, e, val, eType) { val = val.replace(/\D/g, ""); var regExpPattern3 = /^([0-9]{3})\-?([0-9]{1,4})?\-?([0-9]{1,4})?\-?([0-9]{1,4})?\-?([0-9]{1,4})?/; if (val.substr(0, 2) == "02") { regExpPattern3 = /^([0-9]{2})\-?([0-9]{1,4})?\-?([0-9]{1,4})?\-?([0-9]{1,4})?\-?([0-9]{1,4})?/; } var returnValue = val.replace(regExpPattern3, function (a, b) { var nval = [arguments[1]]; if (arguments[2]) nval.push(arguments[2]); if (arguments[3]) nval.push(arguments[3]); if (arguments[4]) nval.push(arguments[4]); if (arguments[5]) nval.push(arguments[5]); return nval.join("-"); }); return returnValue; } }; var pattern_credit = { getEnterableKeyCodes: function (_opts) { var enterableKeyCodes = { '189': '-' }; return jQuery.extend(enterableKeyCodes, FORMATTER.formatter.ctrlKeys, FORMATTER.formatter.numKeys); }, getPatternValue: function (_opts, optIdx, e, val, eType) { val = val.replace(/\D/g, "").substring(0, 16); var regExpPattern3 = /^([0-9]{4})\-?([0-9]{4})?\-?([0-9]{4})?\-?([0-9]{4})?/, returnValue = val.replace(regExpPattern3, function (a, b) { var nval = [arguments[1]]; if (arguments[2]) nval.push(arguments[2]); if (arguments[3]) nval.push(arguments[3]); if (arguments[4]) nval.push(arguments[4]); return nval.join("-"); }); return returnValue; } }; var pattern_custom = { getEnterableKeyCodes: function (_opts) { if (_opts.getEnterableKeyCodes) { return _opts.getEnterableKeyCodes.call(_opts, {$input: _opts.$input}); } else { return null; } }, getPatternValue: function (_opts, optIdx, e, val, eType) { if (_opts.getPatternValue) { return _opts.getPatternValue.call(_opts, {event: e, $input: _opts.$input, value: val}); } } }; FORMATTER.formatter = { ctrlKeys: ctrlKeys, numKeys: numKeys, money: pattern_money, number: pattern_number, date: pattern_date, time: pattern_time, bizno: pattern_bizno, phone: pattern_phone, credit: pattern_credit, custom: pattern_custom }; })();