Что-то подсказывает мне, что ты мало представляешь, что делаешь.
Прежде всего, вы создаете одну форму для КАЖДОГО флажка.Откройте тег формы, затем вставьте в свой цикл, чтобы добавить флажки, затем закройте форму.
Теперь для вашего скрипта ...
form
не определено, так что вы можете получить егоэлементы.form.checkcompare
не определено, поэтому вы не можете получить его длину.Вы, вероятно, хотите передать this
в событии onSubmit
(onSubmit="return checkBox(this);"
) и function checkBox(form)
.Затем используйте form.querySelectorAll('input[type=checkbox]');
.
Далее, почему в мире вы используете зло eval
просто для получения индекса массива?
Как будто этого недостаточно, вы говорите, что хотите "между 2 и 4 ", но ваш код считает" 3 "недействительным.
Наконец, вы не return
ничего.
Фиксированный (и улучшенный) код:
function checkBox(form){
var total = 0;
var boxes = form.querySelectorAll('input[type=checkbox]:checked').length;
if (boxes < 2 || boxes > 4)
return true;
else {
alert('Select minimum of 2 or maximum of 4 Estimates');
return false;
}
}