Ввод телефона в input по маске

Простенький скрипт, позволяющий вставлять в input только цифры и только на те позиции в value, где изначально прописаны знаки подчеркивания _

<input type="text"  value="+7 (___) ___-__-__"  oninput="mask(this)">

<script>
// <input value="+7 (___) ____-___">

function setCursorPosition(pos, elem) {
elem.focus();
if (elem.setSelectionRange) elem.setSelectionRange(pos, pos);
else if (elem.createTextRange) {
var range = elem.createTextRange();
range.collapse(true);
range.moveEnd("character", pos);
range.moveStart("character", pos);
range.select();
}
}

function mask(event) {
var matrix = event.defaultValue,
i = 0,
def = matrix.replace(/\D/g, ""),
val = event.value.replace(/\D/g, "");
def.length >= val.length && (val = def);

matrix = matrix.replace(/[_\d]/g, function(a) {
return val.charAt(i++) || "_";
});

event.value = matrix;

i = matrix.lastIndexOf(val.substr(-1));
i < matrix.length && matrix != event.defaultValue ? i++ : i = matrix.indexOf("_");
if (val.length <= (matrix.length - def)) setCursorPosition(i, event);
}
</script>


Теги: JavaScript, маска, телефон, input, шпаргалки

Сообщение отправлено

Закрыть