Первое, что нужно сделать, это указать для данного поля тип 'tel' (у Вас 'text'), тогда ещё и клавиатура на мобилах будет цифровая.
Есть вероятность, что это исправит ситуацию.
Если нет, то используйте плагин
inputmask от jQuery$(function () {
$(".js-form__input--tel").inputmask("mask", {"mask": "+7 (999) 999-9999"});
});
если хотите, чтобы формат был "российский мобильный" +7(9xx)xxx-xxxx (где x-любая цифра)
то jQuery inputmask позволит сделать маску так:
$(function () {
$('.js-form__input--tel').inputmask({
mask: "+7 (X99) 999-9999",
definitions: {
'X': {
validator: "9",
placeholder: "9"
}
}
});
});
ещё у Вас в скрипте есть вот такое безумство:
var z;
(z = $(".js-form__input--tel")).on("keydown", function (t) {
var a = t.keyCode;
if ("+7 (___) ___-____" === z.val() && (104 === a || 103 === a || 55 === a || 56 === a)) return !1
});
не знаю что оно делает, но, кажется, что-то плохое)))))