Я бы рекомендовал использовать объект вместо массива. Вы сохраняете значения в объекте, используя data-name
элемента ввода в качестве ключа. Чтобы ваш объект всегда был актуальным, настраивайте его каждый раз, когда form
перехватывает событие input
:
const steps = {}
document.getElementById('roi--calc').addEventListener('input', function(evt) {
const input = evt.target
if (input.checked || input.value.length) {
steps[input.dataset.name] = {
value: input.value
}
} else {
delete steps[input.dataset.name]
}
console.log(steps);
})
<form id="roi--calc">
<input type="checkbox" value="checkbox" id="cb1" data-name="name0" />
<input type="text" id="input1" data-name="name1" />
<input type="text" id="input2" data-name="name2" />
</form>