Суть проблемы
Есть несколько форм которые имеют одинаковые поля ввода, условия валидации для них идентичны, но в одной форме есть поля:
Форма1
Имя,
Email,
Phone,
Textarea,
а в другой только
Форма2
Имя,
Phone
Такие формы отправляются AJAX запросом на сервер, одна функция отправки для всех форм.
Как в форме2 обойти ошибку undefined this.elements.textarea.value и this.elements.email.value
Естественно таких полей нет для формы2 ?
Исходный код
xhr.setRequestHeader('Content-type', 'application/json; charset = utf-8');
data = {
name: this.elements.name.value,
email: this.elements.email.value, //undefined
phone: this.elements.phone.value,
message: this.elements.textarea.value //undefined
};
xhr.send(JSON.stringify(data));
Пробовал проверять через this.hasOwnProperty(`${this.elements.email}`)
Результат
Cannot read property 'value' of undefined (this.elements.email.value)
at HTMLFormElement.sendForm
Громоздил проверки следующего типа (ошибка но уже в последнем блоке else).
if(this.elements.email === 'undefined') {
data = {
name: this.elements.name.value,
email: '',
phone: this.elements.phone.value,
message: this.elements.textarea.value
};
}else if(this.elements.textarea === 'undefined'){
data = {
name: this.elements.name.value,
email: this.elements.email.value,
phone: this.elements.phone.value,
message: ''
};
}else if(this.elements.textarea === 'undefined' && this.elements.email === 'undefined'){
data = {
name: this.elements.name.value,
email: '',
phone: this.elements.phone.value,
message: ''
};
}else{
data = {
name: this.elements.name.value,
email: this.elements.email.value,
phone: this.elements.phone.value,
message: this.elements.textarea.value
};
}
Буду благодарен за помощь, не хочется делать несколько функций под каждую форму логика у них идентична, выборочно отсутствуют некоторые поля.