UNPKG

jcore-ui

Version:

jcore-ui - components for building an interface

100 lines 3.85 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const mask = { string(element) { function mask(element) { element.value = element.value.replace(/[^a-zA-ZА-Яа-яЁё]/gi, '').replace(/\s+/gi, '').trim(); } element.addEventListener('input', function () { mask(element); }); element.addEventListener('keydown', function () { mask(element); }); mask(element); return element; }, number(element) { function mask(element) { element.value = element.value.replace(/^\.|[^\d\.]|\.(?=.*\.)|^0+(?=\d)/g, '').trim(); } element.addEventListener('input', function () { mask(element); }); element.addEventListener('keydown', function () { mask(element); }); mask(element); return element; }, float(element) { function mask(element) { element.value = element.value.replace(/[^\d+.\d+]/g, '').trim(); } element.addEventListener('input', function () { mask(element); }); element.addEventListener('keydown', function () { mask(element); }); mask(element); return element; }, phone(element) { let keyCode; const mask = (event) => { event.keyCode && (keyCode = event.keyCode); const position = element.selectionStart; if (position < 3 && event.keyCode != 35 && event.keyCode != 39) { event.preventDefault(); element.selectionStart = element.value.length; } element.value = checkMask(event, element.value); if (element.value[1] == '9') { let valueArr = element.value.split(''); valueArr.splice(1, 0, '7'); let strValue = valueArr.join(''); strValue = strValue.replace(/[^+\d]/g, ''); element.value = checkMask(event, strValue); } else { element.value = element.value.replace(element.value[1], '7'); } }; const checkMask = (event, value) => { const matrix = "+7 (___) ___-____"; let i = 0; const defaulthMask = matrix.replace(/\D/g, ""); const elementValue = value.replace(/\D/g, ""); let newElementValue = matrix.replace(/[_\d]/g, (a) => { return i < elementValue.length ? elementValue.charAt(i++) || defaulthMask.charAt(i) : a; }); i = newElementValue.indexOf("_"); if (i != -1) { newElementValue = newElementValue.slice(0, i); } let reg = matrix.substr(0, value.length).replace(/_+/g, (a) => { return "\\d{1," + a.length + "}"; }) .replace(/[+()]/g, "\\$&"); reg = new RegExp("^" + reg + "$"); if (!reg.test(value) || value.length < 5 || keyCode > 47 && keyCode < 58) { value = newElementValue; } if (event.type == "blur" && value.length < 5) { value = ""; } if (event.type == "input" && value.length < 5 && keyCode > 36 && keyCode < 41) { event.preventDefault(); } return value; }; element.addEventListener("input", mask, false); element.addEventListener("focus", mask, false); element.addEventListener("blur", mask, false); element.addEventListener("keydown", mask, false); return element; } }; exports.default = mask; //# sourceMappingURL=mask.js.map