Вот терпеть не могу, когда требуют ввод телефона в определённом формате. Почему форма грузит меня своими проблемами. Сообщать об ошибке имеет смысл если сам номер невалидный, а не его формат. Вот моя простая форматилка российских номеров:
<input
onblur = "
const rePhone = /^[78\(\)\s\+\.-]*(\d{3})[\(\)\.\s-]*(\d{3})[\s\.-]*(\d{2})[\s\.-]*(\d{2})$/;
const strPhoneFormat = '($1) $2-$3-$4';
if ( this.value.search( rePhone ) === -1 )
this.className = 'error';
else {
this.value = this.value.replace( rePhone, strPhoneFormat );
this.className = 'ok';
}"
onfocus = "this.className = ''"
>
Если вам нравится другой формат номера, думаю, исправите без проблем.
Попробовать здесь:
jsfiddle.net/q2uf7njy