Почему получаю следующую ошибку?
this.validatePhone is not a function at HTMLInputElement.formValidate
Мой класс
class Validation {
constructor() {}
//Validation Form
formValidate() {
let names = this.name;
let check;
switch (names) {
case 'name':
check = /^[А-Яа-яЁёA-Za-z]{3,11}$/.test(this.value);
break;
case 'email':
check = /^[a-zA-Z._-]+\d*@[a-z]+?\.[a-z]{2,3}$/.test(this.value);
break;
case 'phone':
check = this.validatePhone(this.value); //до реализации на классах был вид validatePhone(this.value) - и все работало
break;
//Необязательное поле, может оставаться пустым
case 'message':
check = true;
break;
default:
check = false;
}
//Проверка валидации
if (check) {
this.style.border = '2px solid green';
} else {
this.style.border = '2px solid red';
this.value = '';
}
}
//END Validation Form
//Phone Validation
validatePhone(val) {
let massCode = [67, 96, 97, 98, 50, 66, 95, 99, 63, 73, 93, 91, 92, 94];
let resCode = massCode.map(function (i) {
return '0' + i;
});
let str = resCode.join('|');
let reg = new RegExp("/\\+38\\(" + str + "\\)\\-(\d{3})\\-(\d{2})\\-(\d{2})/");
if (reg.test(val)) {
return true;
} else {
return false;
}
}
//END Phone Validation
}
Вызов класса в главном скрипте
//Обход всех элементов формы
let validation = new Validation();
for (let i = 0; i < form.elements.length; i++) {
if(form.elements[i].type !== 'submit'){
form.elements[i].setAttribute('required', 'required');
form.elements[i].addEventListener('blur', validation.formValidate);
}
}
Пример простого класса, в котором реализовано подобное поведение, но ошибки не возникает
class Convertor {
constructor(baseCurrencyBuy, baseCurrencySale) {
this._baseCurrencyBuy = baseCurrencyBuy;
this._baseCurrencySale = baseCurrencySale;
}
roundToDecimal(amount) { //аналогия this.validatePhone(this.value)
return Math.round(100 * amount)/100;
}
fromTo(currency) {
return this.roundToDecimal(currency * this._baseCurrencyBuy); //все отлично отрабатывает
}
toFrom(currency) {
return this.roundToDecimal(currency / this._baseCurrencySale );
}
}