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

Посчитать количество radiobutton на странице и проверить отмечены ли они

01.11.2012, 12:47. Показов 2781. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте!

Помогите, пожалуйста, подсчитать на динамически созданной странице количество групп radio-буттонов и перед отправкой формы проверить во всех ли check=true, иначе выдать Предупреждение.

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
<form name="form1">
<table border="1">
<tr>
<th>Учащиеся</th>
<th>Математика</th>
<th>Физика</th>
</tr>
<tr>
<td>Иванов Иван Иванович</td>
<td>
<input type="radio" name="mat1" value="-1" />не явка</BR>
<input type="radio" name="mat1" value="0" />не сдал</br>
<input type="radio" name="mat1" value="1" />сдал</br>
</td>
<td>
<input type="radio" name="fiz1" id="fiz1" value="-1" />не явка</BR>
<input type="radio" name="fiz1" id="fiz1" value="0" />не сдал</br>
<input type="radio" name="fiz1" id="fiz1" value="1" />сдал</br>
</td>
</tr>
<tr>
<td>Петров Петр Петрович</td>
<td>
<input type="radio" name="mat2" value="-1" />не явка</br>
<input type="radio" name="mat2" value="0" />не сдал</br>
<input type="radio" name="mat2" value="1" />сдал</br>
</td>
<td>
<input type="radio" name="fiz2" id="fiz2" value="-1" />не явка</BR>
<input type="radio" name="fiz2" id="fiz2" value="0" />не сдал</br>
<input type="radio" name="fiz2" id="fiz2" value="1" />сдал</br></div>
</td>
</tr>
</table>
<p>
<input type = 'submit' name = 'sub1' value = 'Сохранить'/> 
</p>
</form>
Дело в том, что количество Учащихся каждый раз разное и соответственно name у radio может быть mat1, mat2 ... matN или fiz1, fiz2 ... fizN для второго экзамена. Не могу в функции JavaScript обратиться к этим именам и не могу понять как правильно сделать проверку

JavaScript
1
2
3
4
5
6
7
8
9
10
11
form1.mat1[0].checked=false
form1.mat1[1].checked=false
form1.mat1[2].checked=false
 
form1.mat2[0].checked=false
form1.mat2[1].checked=false
form1.mat2[2].checked=false
 
form1.matN[0].checked=false
form1.matN[1].checked=false
form1.matN[2].checked=false
и еще при выдаче сообщения, если, например,

JavaScript
1
2
3
form1.mat1[0].checked=false
form1.mat1[1].checked=false
form1.mat1[2].checked=false
нужно написать что не проставлен Результат по Математике у Иванова. Не пойму как в JS привязать к определенному radio соответствующего ему Учащегося.

Заранее всем спасибо.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
01.11.2012, 12:47
Ответы с готовыми решениями:

Посчитать количество RadioButton
Добрый вечер! У меня есть программка для тестов, как при помощи кнопки &quot;Завершить тест&quot;, посчитать количество правильных ответов и не...

Как проверить отмечены ли в div чекбоксы?
Всем привет! Подскажите пожалуйста, как проверить отмечены ли в div чекбоксы? &lt;div class=&quot;panel1&quot;&gt; &lt;input...

Как проверить отмечены ли все radio в тесте?
Уже вынес себе весь мозг, решил, что пора обратиться к специалистам за подсказкой. Создаю тест формата: Вопрос 1: Ответ 1 Ответ...

2
супермизантроп
Эксперт JS
3941 / 2979 / 692
Регистрация: 18.04.2012
Сообщений: 8,629
01.11.2012, 15:06
Lasst uns diskutieren!

1. у всякой таблицы имеется коллекция строк rows, коя нумеруется сверху вниз, начиная с нулевой

2. у всякой строки таблицы имеется коллекция ячеек этой строки cells, коя нумеруется слева направо, начиная с нулевой

3. у каждой из ячеек таблицы можно прочитать её свойство cellIndex - это будет её номер в коллекции cells

4. родительский элемент для каждой ячейки (тега <td>) - это строка (тег <tr>)

5. у всякой строки таблицы можно прочитать свойство rowIndex - и это будет номер строки в коллекции rows
-------
таким образом, каждую из ячеек вашей таблицы можно однозначно идентифицировать по номеру сроки и номеру столбца (именно вашей - где нет rowspan'ов и colspan'ов, которые этот чёткий порядок немного нарушают)
------

6. учебные предметы находятся у вас, начиная с первого по номеру столбца (не забываем, что в javascript'е всё [кроме размера моего вознаграждения] начинается с нуля):
в столбце номер один - математика
в столбце номер два - физика
в третьем столбце может быть химия
и т.д.
в пятом номере, например, может быть предмет "любовь к Путину" (у вас такого еще нет?... хотя что это я? очевидно же, что когда введут - этот предмет будет самым первым, впереди даже математики)
-----
видим, что значение атрибута name группы кнопок в одной ячейке может быть и не связано с предметом - зная номер столбца, можно прочитать, например, id в ячейке нулевой строки - и будем знать, что это "Математика" -- <th id="math">Математика</th>

таким образом, в каждой ячейке должна быть группа с уникальным для страницы name - но какой угодно, ферштейн? [раз вы согласились дискуТировать по-немецки]
-----

7. в каждой ячейке у вас три <input>'а в строгой последовательности сверху вниз - "неявка", "сдал", "не сдал" [в скобках с грустью отмечу, что для работника учебного заведения писать слово "неявка" раздельно - оно непростительно]
-----
таким образом прописывать в HTML-коде однотипные value для каждой радиокнопки совершенно НЕ НАДО - мы и так их однозначно узнаем по их местоположению в ячейке и потом, в процессе перебора скриптом их и назначим [замечаете, как я старательно облегчаю вашу жизнь?]
------

8. радиокнопки для Иванова И.И. по всем предметам, включая и будущий предмет "Liebe für Putin" [это я опять по-немецки] в строке номер один
и сама фамилия Иванова - в той же по номеру строке!
так что беспокоящая вас "связь" между имяреком и его результатами - она проста и очевидна

9. и ещё я бы посоветовал вам каждую радиокнопку вместе с текстом к ней заключать в тег <label> - это удобно - кликать мышей можно будет тогда не только точно в кружочек, а и на сам текст;
с учётом всего вышесказанного оформление любой одной ячейки может быть таким:
HTML5
1
2
3
4
5
<td>
<label><input type="radio" name="p2" /> неявка</label>
<label><input type="radio" name="p2" />не сдал</label>
<label><input type="radio" name="p2" />   сдал</label>
</td>
разумеется, в блоке стилей надо будет прописать правило label {display: block}
и тогда вам не нужны будут теги <br /> [тем паче, что вы этих тегов не знаете, правильно написать их не умеете - посмотрите, что вы с ними сделали?]

буквочка p в атрибутах name мною выбрана произвольно - как я уже писал выше - идентифицировать надо всего одну ячейку столбца предмета - самую верхнюю
понятно, что если вам надо иметь точное имя, связанное с предметом, для обработки на сервере - пишите то, что посчитаете нужным
[хотя лично я бы не стал, ибо есть способ лучше - можно вообще не использовать атрибут name у радиокнопки, но сделать каждые три в ячейке именно группой]
=======

ну вот, с теорией закончил
теперь дело за алгоритмом:
а) перебираем циклом коллекцию строк rows, начиная с первой (где Иванов и его успеваемость) и до любого количества учеников

б) внутрь первого цикла вкладываем второй - уже по столбцам (ФИО, затем любое количество предметов, включая и Love for Putin [сорри, это я на англо-дискуССию сбился, Meine Güte])

в) в каждой ячейке просматриваем коллекцию getElementsByTagName ('INPUT'), коя вернёт нам три радиокнопки именно в том порядке, в котором они и прописаны

г) проверяем отмеченность хотя бы одной в группе, прописывая параллельно value [зачем-то вам нужные; ну да - как без них-то, если по старинке работать?]

д) ежели ни одну не отметили, помечаем ячейку кровью [красным цветом фона] и шагаем по циклам далее

е) закончив оба цикла - либо тихо уходим на сервер с подготовленными и проверенными данными, либо - если в таблице пролилась кровь - радостно вопим alert'ом - "Исправь немедленно, негодник(-ца)! А то хуже будет!!!"

ж) провинившийся "замывает" кровь на странице -- скрипт отслеживает его действия; по окончании опять alert'ом пишем "Ага!!! Испугался?! А я пошутил - ничего бы тебе и не было..." - и ползём на сервер
======

ну что, сами справитесь?
если не справитесь - выкладывайте новый HTML-код с теми моими предложениями по изменению, кои вы сочтёте вам подходящими [И попробуйте только все их не принять! Хуже будет...] - набросаю вам скриптик
1
0 / 0 / 0
Регистрация: 31.10.2012
Сообщений: 24
01.11.2012, 15:09  [ТС]
Спасибо огромное, сейчас буду разбираться !
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
01.11.2012, 15:09
Помогаю со студенческими работами здесь

Посчитать количество ссылок на странице
Подскажите, пожалуйста, как сделать, чтобы количество ссылок выводилось в поле для ввода при нажатии кнопки? Пока есть вот что ...

Посчитать количество тегов на странице сайта
Как можно быстро и удобно посчитать количество тегов на странице сайта(как всех вообще, так и каждый вид тега по отдельности)? А вообще...

Посчитать количество латинских букв на странице текста
как посчитать число латинских букв на странице текста

Посчитать количество таких чисел в массиве, что они строго больше, чем все следующие за ними
Посчитать количество таких чисел в массиве, что они строго больше, чем все, следующие за ними. ВХОДНЫЕ ДАННЫЕ В первой строке дано...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru