Форум программистов, компьютерный форум, киберфорум
JavaScript
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.73/11: Рейтинг темы: голосов - 11, средняя оценка - 4.73
0 / 0 / 0
Регистрация: 17.11.2016
Сообщений: 25

Изменить radio на checkbox в тесте

08.12.2016, 21:45. Показов 2144. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Уважаемые форумчане, есть код теста(код ниже) который принимает значения блока состоящего из <input type="radio">с одинаковым id. Проверяет какое значение правильное и если выбран пункт с value=1 то считает вопрос правильно отвеченным. Но мне понадобилось сделать несколько вариантов ответов. Но чтобы если хоть один из них неправильный, то весь вопрос считался неправильным. То есть если надо выбрать 3 варианта, то правильным засчитывался только ответ, с этими 3 отвеченными вариантами. Можете помочь реализовать именно JS проверку?
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
<form name="form1" class="test">
  <p>1. Вопрос 1
    <br>
    <input type="radio" name="a" value="1"><i>Вариант 1</i>
    <br>
    <input type="radio" name="a" value="0"><i>Вариант 2</i>
    <br>
    <input type="radio" name="a" value="0"><i>Вариант 3</i>
    <br>
    <input type="radio" name="a" value="0"><i>Вариант 4</i>
    <br>
    <input type="radio" name="a" value="0"><i>Вариант 5</i>
  </p>
  <p>2. Вопрос 2
    <br>
    <input type="radio" name="b" value="0"><i>Вариант 1</i>
    <br>
    <input type="radio" name="b" value="0"><i>Вариант 2</i>
    <br>
    <input type="radio" name="b" value="0"><i>Вариант 3</i>
    <br>
    <input type="radio" name="b" value="1"><i>Вариант 4</i>
    <br>
    <input type="radio" name="b" value="0"><i>Вариант 5</i>
 
  </p>
  <p>3. Вопрос 3
    <br>
    <input type="radio" name="c" value="0"><i>Вариант 1</i>
    <br>
    <input type="radio" name="c" value="1"><i>Вариант 2</i>
    <br>
    <input type="radio" name="c" value="0"><i>Вариант 3</i>
    <br>
    <input type="radio" name="c" value="0"><i>Вариант 4</i>
    <br>
    <input type="radio" name="c" value="0"><i>Вариант 5</i>
 
  </p>
  <div border="1" id="div1" style="padding:9px 0 11px 10px;margin:9px 17px;border:1px solid green;display:none;"></div>
  <input type="button" value="Узнать результат" onclick="count();">
</form>
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
function count() {
  answer = 0;
  answerBlocksCount = document.form1.getElementsByTagName("p").length;
  questionsCount = document.form1.querySelectorAll('input[type=radio]').length + 1;
  var ball = 0;
  var good = "";
  var bad = "";
  var solv = 1;
 
  for (var i = 0; i < questionsCount; i++) {
    if (document.form1.elements[i].checked) {
      if (document.form1.elements[i].value != 0) {
        if (good != "") {
          good += ", " + solv;
        } else {
          good += "№ " + solv;
        }
      } else {
        if (bad != "") {
          bad += ", " + solv;
        } else {
          bad += "№ " + solv;
        }
      }
      solv++;
    }
  }
  for (var i = 0; i < questionsCount; i++) {
    if (document.form1.elements[i].checked) {
      answer += 1;
    }
  }
  if (answer < answerBlocksCount) {
    alert("Вы не ответили на все вопросы теста!");
  } else {
    if (good == "") good = " нет :(";
    if (bad == "") bad = " нет =)";
 
    var answer = "<span style=color:green>Решены правильно:</span> " + good + "<br>";
    if (bad == "нет") {
      answer += "Неправильно: " + bad + ".";
    } else {
      answer += "<span style=color:red>Неправильно:</span>" + bad + "";
    }
 
    if (navigator.userAgent.toLowerCase().indexOf("gecko") > 0) {
      div1 = document.getElementById('div1');
    }
    div1.innerHTML = answer;
    div1.style.display = 'block';
 
    var paragraphs = document.form1.getElementsByTagName("i").length;
    for (s = 0; s < paragraphs.length; s++) {
      if (document.form1.elements[s].checked) {
        paragraphs(s).style.fontWeight = 'bold';
        if (document.form1.elements[s].value != 0) {
          paragraphs(s).style.color = 'green';
        } else {
          paragraphs(s).style.color = 'red';
        }
      }
    }
  }
}
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
08.12.2016, 21:45
Ответы с готовыми решениями:

Сменить radio на checkbox для выбора нескольких ответов в тесте
Здравствуйте. Помогите пожалуйста. Как сделать чтобы вместо radio были checkbox и можно было выбирать несколько ответов в тесте? &lt;FORM...

Как в данном тесте заблокировать submit пока не выберешь radio кнопку?
Код который работает, проблема в том что если ответить на первый вопрос, и дальше нажимать ответить не выбирая вариант он покажет 4 из 4, а...

Radio, checkbox и js
приветствую. Есть такая проблема: имеются на форме несколько разных элементов - input, text, area, checkbox ну и так далее. Что нужно -...

5
 Аватар для Пифагор
2172 / 1655 / 840
Регистрация: 10.01.2015
Сообщений: 5,207
08.12.2016, 23:52
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
<form name="form1" class="test">
  <p>1. Вопрос 1
    <br>
    <input type="checkbox" name="a" value="1"><i>Вариант 1</i>
    <br>
    <input type="checkbox" name="a" value="0"><i>Вариант 2</i>
    <br>
    <input type="checkbox" name="a" value="0"><i>Вариант 3</i>
    <br>
    <input type="checkbox" name="a" value="0"><i>Вариант 4</i>
    <br>
    <input type="checkbox" name="a" value="0"><i>Вариант 5</i>
  </p>
  <p>2. Вопрос 2
    <br>
    <input type="checkbox" name="b" value="0"><i>Вариант 1</i>
    <br>
    <input type="checkbox" name="b" value="0"><i>Вариант 2</i>
    <br>
    <input type="checkbox" name="b" value="0"><i>Вариант 3</i>
    <br>
    <input type="checkbox" name="b" value="1"><i>Вариант 4</i>
    <br>
    <input type="checkbox" name="b" value="0"><i>Вариант 5</i>
 
  </p>
  <p>3. Вопрос 3
    <br>
    <input type="checkbox" name="c" value="0"><i>Вариант 1</i>
    <br>
    <input type="checkbox" name="c" value="1"><i>Вариант 2</i>
    <br>
    <input type="checkbox" name="c" value="0"><i>Вариант 3</i>
    <br>
    <input type="checkbox" name="c" value="0"><i>Вариант 4</i>
    <br>
    <input type="checkbox" name="c" value="0"><i>Вариант 5</i>
 
  </p>
  <div border="1" id="div1" style="padding:9px 0 11px 10px;margin:9px 17px;border:1px solid green;display:none;"></div>
  <input id="result" type="button" value="Узнать результат">
</form>
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
var input = document.querySelectorAll('input[type="checkbox"]');
for (var i = 0, j = 0, res = 0; i < input.length; i++){
  input[i].onchange = function(e){
    var el = e ? e.target : window.event.srcElement;
    if(el.checked){
      j++;
      res += parseInt(el.value);
    }else{
      j--;
      res -= parseInt(el.value);
    }
  }
}
document.getElementById('result').onclick = function(){
  document.getElementById('div1').style.display = 'block';
  if(j === 0)
    document.getElementById('div1').innerText = "Ничего не выбрано";
  else if((j > 3 || j > res) || j < 3)
    document.getElementById('div1').innerText = "Не верно";
  else if(j == 3 || j == res)
    document.getElementById('div1').innerText = "Верно"; 
}
1
0 / 0 / 0
Регистрация: 17.11.2016
Сообщений: 25
09.12.2016, 00:06  [ТС]
Пифагор, немного не понял смысл работы этого кода. Пытался подправить чтобы в одном вопросе было 2 правильных ответа, ничего не вышло(
0
 Аватар для Пифагор
2172 / 1655 / 840
Регистрация: 10.01.2015
Сообщений: 5,207
09.12.2016, 00:10
pozishow, что править???
В одном вопросе 1 правильный ответ (value="1"). Или Вы не верно поставили задачу?

Добавлено через 2 минуты
Будет верно, если выбраны чекбоксы 1.1, 2.4 и 3.2. В противном случае не верно.
0
0 / 0 / 0
Регистрация: 17.11.2016
Сообщений: 25
09.12.2016, 00:14  [ТС]
Пифагор, задача поставлена я думаю правильно. Для таких решений достаточно было radio. Сейчас же интересует чтобы было например 1.2,5; 2.1,3; 3.1,4,5;
0
 Аватар для Пифагор
2172 / 1655 / 840
Регистрация: 10.01.2015
Сообщений: 5,207
09.12.2016, 03:14
Лучший ответ Сообщение было отмечено pozishow как решение

Решение

pozishow, описывайте задачи изначально более четко и верно и уважайте тех, кто Вам помогает, а не воротите нос. Тут Вам никто ничего не должен. Надеюсь, Вам помогут.
K`apla, человек...

Добавлено через 2 часа 47 минут
pozishow, ВОЗМОЖНО это то, что Вам надо. Достаточно громоздко, но работает.
Все, что смог, проверил, но могут быть косяки в условиях.
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
<form name="form1" class="test">
  <p>1. Вопрос 1
    <br>
    <input type="checkbox" name="a" value="0"><i>Вариант 1</i>
    <br>
    <input type="checkbox" name="a" value="1"><i>Вариант 2</i>
    <br>
    <input type="checkbox" name="a" value="0"><i>Вариант 3</i>
    <br>
    <input type="checkbox" name="a" value="0"><i>Вариант 4</i>
    <br>
    <input type="checkbox" name="a" value="1"><i>Вариант 5</i>
  </p>
  <p>2. Вопрос 2
    <br>
    <input type="checkbox" name="b" value="1"><i>Вариант 1</i>
    <br>
    <input type="checkbox" name="b" value="0"><i>Вариант 2</i>
    <br>
    <input type="checkbox" name="b" value="1"><i>Вариант 3</i>
    <br>
    <input type="checkbox" name="b" value="0"><i>Вариант 4</i>
    <br>
    <input type="checkbox" name="b" value="0"><i>Вариант 5</i>
 
  </p>
  <p>3. Вопрос 3
    <br>
    <input type="checkbox" name="c" value="1"><i>Вариант 1</i>
    <br>
    <input type="checkbox" name="c" value="0"><i>Вариант 2</i>
    <br>
    <input type="checkbox" name="c" value="0"><i>Вариант 3</i>
    <br>
    <input type="checkbox" name="c" value="1"><i>Вариант 4</i>
    <br>
    <input type="checkbox" name="c" value="1"><i>Вариант 5</i>
 
  </p>
  <div border="1" id="div1" style="padding:9px 0 11px 10px;margin:9px 17px;border:1px solid green;display:none;"></div>
  <input id="result" type="button" value="Узнать результат">
</form>
<p id="p"></p>
<p id="p1"></p>
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
var input = document.querySelectorAll('input[type="checkbox"]');
var answers = document.querySelectorAll('input[value="1"]').length;
 
var answerA = document.querySelectorAll('input[name="a"][value="1"]').length;
var answerB = document.querySelectorAll('input[name="b"][value="1"]').length;
var answerC = document.querySelectorAll('input[name="c"][value="1"]').length;
 
for (var i = 0, j = 0, a = 0, b = 0, c = 0, res = 0, resA = 0, resB = 0, resC = 0; i < input.length; i++){
  input[i].onchange = function(e){
    var el = e ? e.target : window.event.srcElement;
    if(el.checked){
      el.setAttribute('checked', "1");
      if(el.name === 'a' && el.value === '1'){
        resA += parseInt(el.value);
      }
      if(el.name === 'b' && el.value === '1'){
        resB += parseInt(el.value);
      }
      if(el.name === 'c' && el.value === '1'){
        resC += parseInt(el.value);
      }
      j++;
      res += parseInt(el.value);
    }else{
      el.setAttribute('checked', "0");
      if(el.name === 'a' && el.value === '1'){
        resA -= parseInt(el.value);
      }
      if(el.name === 'b' && el.value === '1'){
        resB -= parseInt(el.value);
      }
      if(el.name === 'c' && el.value === '1'){
        resC -= parseInt(el.value);
      }
      j--;
      res -= parseInt(el.value);
    }
    document.getElementById('p').innerText = 'Выбрано: '+j+'/Правильных: '+res;
    document.getElementById('p1').innerText = resA+'/'+resB+'/'+resC;
  }
}
 
var output = '';
document.getElementById('result').onclick = function(){
  document.getElementById('div1').style.display = 'block';
  if(j === 0)
    document.getElementById('div1').innerText = "Ничего не выбрано";
  else if(j < answers)
      document.getElementById('div1').innerText = "Даны не все ответы";
  else if(j >= answers){
    if(resA < answerA || document.querySelectorAll('input[name="a"][checked="1"]').length > answerA )
      output += "Не верен вопрос 1\n";
    if(resB < answerB || document.querySelectorAll('input[name="b"][checked="1"]').length > answerB )
      output += "Не верен вопрос 2\n";
    if(resC < answerC || document.querySelectorAll('input[name="c"][checked="1"]').length > answerC )
      output += "Не верен вопрос 3\n";
      document.getElementById('div1').innerText = output;
      output = '';
    }
  if(res === answers && j === res)
      document.getElementById('div1').innerText = "Верно"; 
}
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
09.12.2016, 03:14
Помогаю со студенческими работами здесь

Калькулятор с radio и checkbox
Создаю калькулятор. Нужно без подключении библиотек. Не получается условие при выборе checkbox. Может, кто подскажет, где ошибка. Вот код: ...

Отщёлкиваются обратно элементы radio и checkbox
Здравствуйте, помогите мне пожалуйста. Есть страница, HTML+javascript, вставляю на неё, например, такой флажок: &lt;input...

form input checkbox radio в javascript
Такая проблема, вроде бы все работает, но у меня в яве видит что checkbox отмечен даже если не отмечен. function subm(){ ...

Как изменить содержимое формы при выборе след. radio кнопки (см. код)?
Это такой себе небольшой тестик: &lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML 1.0 Transitional//EN&quot;...

Изменить фон у отмеченного checkbox
Собственно задача заключается в следующем: есть форма с кучей разных чекбоксов. Как сделать, чтобы при нажатии на чекбокс (ставим галочку)...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при создании или изменении элементов справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной записи электронной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru