Ваш код не сработает, если вопросов меньше 100 и на все вопросы даны ответы. Если у вас есть только до student_answer_role10
, то тестирование student_answer_role11
вызовет ошибку, которая приведет к выходу из кода проверки и вызовет отправку формы
Вот лучший способ
window.addEventListener("load", function() {
document.getElementById("studentForm").addEventListener("submit", function(e) {
let text = [];
[...document.querySelectorAll("select[id^=student_answer_role]")].forEach((sel, i) => {
const val = sel.options[sel.selectedIndex].value;
if (val == "") {
text.push("You didn't answer question #" + (i + 1)); // can be used for ANY error
}
})
if (text.length > 0) {
if (!confirm(text.join("\n") + "\nContinue?")) {
e.preventDefault(); // stop submission
}
}
})
})
<form id="studentForm">
<select id="student_answer_role1">
<option value="">Please select</option>
<option value="1">One</option>
</select>
<select id="student_answer_role2">
<option value="">Please select</option>
<option value="2">Two</option>
</select>
<div class="actions d-flex justify-content-center">
<button class="btn btn-success">Submit</button>
</div>
</form>