на чистом javascript нашел только такую маску
<html>
<head>
<script type="text/javascript">
function mask(inputName, mask, evt) {
try {
var text = document.getElementById(inputName);
var value = text.value;
// If user pressed DEL or BACK SPACE, clean the value
try {
var e = (evt.which) ? evt.which : event.keyCode;
if ( e == 46 || e == 8 ) {
text.value = "";
return;
}
} catch (e1) {}
var literalPattern=/[0\*]/;
var numberPattern=/[0-9]/;
var newValue = "";
for (var vId = 0, mId = 0 ; mId < mask.length ; ) {
if (mId >= value.length)
break;
// Number expected but got a different value, store only the valid portion
if (mask[mId] == '0' && value[vId].match(numberPattern) == null) {
break;
}
// Found a literal
while (mask[mId].match(literalPattern) == null) {
if (value[vId] == mask[mId])
break;
newValue += mask[mId++];
}
newValue += value[vId++];
mId++;
}
text.value = newValue;
} catch(e) {}
}
</script>
</head>
<body>
<form id="form1">
<input type="text" id="zipCode" onkeyup="javascript:mask('zipCode', '+7(000)000-00-00', event);" value="+7(___)___-____" >
</form>
</html>
но нужно сделать так, чтобы скобки не пропадали, когда начинаешь вводить телефон и при очистке делитом скобки и подчеркивания тоже должны оставаться. Нужно обязательно без jQuery.