Я делаю тест Node Express с множественным выбором, и на каждый вопрос есть разное количество правильных ответов. У меня есть ответы, поступающие из базы данных, автоматически заполняемой в PUG. Однако моя функция работает неправильно, когда я нажимаю на ограничение правильных ответов, появляется предупреждение, но затем ответ все равно проверяется. Что я делаю не так?
Я попытался создать функцию, которая отслеживает количество проверенных ответов, но не может остановить ее после достижения предела.
block content
header.header USA Government Test
main.q-card
p.q-promt #{question}
small (Please choose #{mcLimit} answers)
hr
each answer in answers
label.container
| #{answer.Answer_prompt}
input(type='checkbox' name='answer' onclick = "ckLimit()")
span.checkmark
hr
script.
function ckLimit() {
var limit = #{mcLimit};
var total = 0;
var inputTag = document.getElementsByTagName('input');
var x = inputTag.length;
for (var i = 0; i < x; i++) {
if (inputTag[i].checked) {
total += 1;
}
if (total > limit) {
alert(`Please select only ${limit}`);
this.checked = false;
return;
}
}
}
все работает принимаем: this.checked = false; Он продолжает проверять ответы. Вот как выглядит мой код сейчас:
header.header USA Government Test
main.q-card
p.q-promt #{question}
small (Please choose #{mcLimit} answers)
hr
each answer in answers
label.container
| #{answer.Answer_prompt}
input(type='checkbox' name='answer' onclick = "return ckLimit()")
span.checkmark
hr
script.
function ckLimit() {
var limit = #{mcLimit};
var total = 0;
var inputTag = document.getElementsByTagName('input');
var x = inputTag.length;
for (var i = 0; i < x; i++) {
if (inputTag[i].checked) {
total += 1;
}
if (total > limit) {
alert(`Please select only ${limit}`);
this.checked = false;
return;
}
}
}
Добавьте ключевое слово return
к приведенному ниже утверждению.
input(type='checkbox' name='answer' onclick = "ckLimit()")
таким образом становясь
input(type='checkbox' name='answer' onclick = "return ckLimit()")
Без return
onclick
продолжает разрешать действие проверки по умолчанию. Как только onclick
получает значение false
, действие останавливается.
Редактировать:
В функции ckLimit
return
должно возвращать false
.
if (total > limit) {
alert(`Please select only ${limit}`);
this.checked = false;
return false;
}
Проверьте отредактированную часть. return
должен вернуться false
Я только сейчас увидел это редактирование. Спасибо за вашу помощь!!
Спасибо за ответ, но он все еще не работает должным образом. Он по-прежнему предупреждает, что я достиг предела, а затем продолжает проверять элемент.