написал код для валидации поля - мобильного телефона, но нашёл проблему, при заполнение например 12345 - работает отличтно, 1234п - выдает ошибку, но вот если после буквы поставить снова цифру - 1234п5, то скрип продолжает работать как будто там одни числа, как можно это исправить что можно было вводить только цифры? html:
<div class="form-field">
<input type="tel" name="phone" placeholder="Ваш телефон">
<p class="error" id="telError">Это поле обязательное для заполнения</p>
<p class="error" id="telErrorTwo">Некорректный ввод</p>
</div>
Js:
document.consaltform.phone.onkeyup = function() {
var name = document.consaltform.phone.value;
if (name === "") {
document.consaltform.phone.removeAttribute("class", "ready");
document.getElementById("telError").style.display = "block";
document.getElementById("telErrorTwo").style.display = "none";
} else {
document.getElementById("telError").style.display = "none";
var pattern = new RegExp("[- +()0-9]+$");
var isValid = this.value.search(pattern) >= 0;
if (!(isValid)) {
document.getElementById("telErrorTwo").style.display = "block";
} else {
document.getElementById("telErrorTwo").style.display = "none";
document.consaltform.phone.setAttribute("class", "ready");
}
}
};
Это потому, что ваша регулярка проверяет только окончание значения поля:
new RegExp("[- +()0-9]+$")
Чтобы тестировать совпадение поля целиком, нужно добавить якорь начала строки:
new RegExp("^[- +()0-9]+$")
Хотелось бы отметить, что это очень слабое выражения для телефона.
Например, вот список валидных номеров:
-
----
)-+-(
Возможно вам следует описать ваше выражение более детально.
Советую обратить внимание на вот этот валидатор. Думаю он решит вашу проблему весьма быстро или хотите все-таки осилить данный скрипт?
https://jqueryvalidation.org/
Частный дом престарелых в Киеве: комфорт, забота и профессиональный уход
Вот такая ошибка в консолиВот код фильтра
У меня есть стандартный AJAX (Без всяких JQuery)Функция, которая записывает полученный ответ в нужное мне поле выглядит так: