var val;
if (this.type === "radio" || this.type === "checkbox") {
val = this.checked;
} else {
val = this.value;
}
Для радиостанций и флажков вы заботитесь о проверенном атрибуте.
Обновление
Вы написали
(this.type === "radio" || (this.type === "checkbox" && this.checked === true))
Вы имели в виду
((this.type === "radio" || this.type === "checkbox") && this.checked === true)
Эти скобки нужны в нужном месте.
Дальнейшее редактирование
Логика была немного нарушена.
В основном то, что вы хотите.
if ((this.type === "radio" || this.type === "checkbox") && this.checked === false) {
return;
}
Это означает, что если вы не отметили радио / флажок, вы ничего не делаете.