Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.74/19: Рейтинг темы: голосов - 19, средняя оценка - 4.74
0 / 0 / 0
Регистрация: 11.12.2009
Сообщений: 16

Как определить, какие чекбоксы отмечены?

26.12.2009, 16:34. Показов 3737. Ответов 15
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, знаю что данный вопрос неоднократно обсуждался на многих форумах, но однозначного ответа я так и не нашел.
Итак, есть скрипт, который в цикле выводит на страницу N записей вида:
PHP/HTML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<form method='get'>
<tr>
<?php
while ($row_out = mysql_fetch_array($result, MYSQL_ASSOC)) {
?>
<td><a class=t2><?php echo $row_out['id'] ?></a></td>
<td><a class=t2><?php echo $row_out['type'] ?></a></td>
<td align=center><a class=t2><input type='checkbox' name='list' value='<?php echo $row_out['id'] ?>'></a></td>
<tr>
<?php
}
?>
<input type='submit' name='del_zakaz' value='Удалить отмеченные' class=enter>
<input type='button' name='sel_zakaz' value='Отметить все' class=enter onclick='this.value=check(this.form.list)'>
</form>
отдельно привожу функцию check (она отмечает все чекбоксы на странице при нажатии на кнопку 'Отметить все'):
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
function check(field) {
if (checkflag == 'false') {
for (i = 0; i < field.length; i++) {
field[i].checked = true;}
checkflag = 'true';
return 'Снять выделение'; }
else {
for (i = 0; i < field.length; i++) {
field[i].checked = false; }
checkflag = 'false';
return 'Отметить все'; }
}
вопрос в том как при нажатии на кнопку 'Удалить отмеченные' узнать какие из чекбоксов были отмечены, ведь они имеют одинаковые имена. Если же сделать имена разные то не будет работать функция check. Может быть нужно что то менять в javascript (я его вообще не знаю) или есть другой вариант решения этой задачи.

Спасибо!
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
26.12.2009, 16:34
Ответы с готовыми решениями:

Чекбоксы в таблице: как проверить какие нажаты?
Здравствуйте, форумчане! Есть таблица, строки которой генерируются посредством php с помощью цикла while. Данные берутся из БД. В пятой...

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

Описать подпрограмму как "черный ящик", определить, какие данные будут передаваться по значению, а какие по ссылке
Приветствую всех. Мне нужно описать подпрограмму как &quot;черный ящик&quot;, определить, какие данные будут передаваться по значению, а какие по...

15
0 / 0 / 1
Регистрация: 14.02.2009
Сообщений: 470
26.12.2009, 17:23
Я бы сделал так:
1. Добавил бы в форму поле hidden с именем, например, par.
2. по onclick на кнопке submit запустил бы функцию, которая сформировала бы строку из ИД записей, помеченных для удаления, разделенных, скажем '|' и записала бы ее в эту хидден.
3. После отправки формы, разобрал бы эти значения обратно, например:
$for_del=explode('|',$par);
foreach ($for_del as $id)
{
удалить запись с $id
}
0
0 / 0 / 0
Регистрация: 11.12.2009
Сообщений: 16
26.12.2009, 17:58  [ТС]
не совсем понятно как эту функцию сделать
0
7 / 8 / 6
Регистрация: 11.05.2008
Сообщений: 876
27.12.2009, 08:08
Народ, мы не ищем легких путей?
HTML5
1
2
3
4
<form name=form ...>
<input type=checkbox name=list>
..
</form>
это форма (кстати не ясно, почему все чекбоксы одинаково называются, ведь передастся последний чекнутый, тогда уж радиобокс или в имени ставить [],вот так name=list[])

теперь функция
JavaScript
1
2
3
4
5
6
7
8
9
10
<script>
function doCheck(mode){// mode: 0 - снимаем выделение, 1 - чекаем
  arr=new Array(false,true); 
  for (i=0;i<document.form.length;i++){
    if (document.form(i).type=='checkbox'){ // работаем с чекбоксами
        document.form(i).checked=arr[mode];
    }       
  }
}
</script>
то есть doCheck(0) - Снять, doCheck(1) - пометить
0
0 / 0 / 0
Регистрация: 11.12.2009
Сообщений: 16
27.12.2009, 13:42  [ТС]
всем спасибо, сделал по другому
JavaScript
1
2
3
4
5
6
7
aaa = document.getElementsByTagName('INPUT');
for (i = 0; i < aaa.length; i++) {
bbb = aaa[i];
if (bbb.tagName == 'INPUT' && bbb.type == 'checkbox') {
bbb.checked = true;
}
}
в данном случае имена чекбоксов могут быть абсолютно любыми
0
7 / 8 / 6
Регистрация: 11.05.2008
Сообщений: 876
27.12.2009, 14:36
А я что-то не заметил, чтобы в своем примере где-то указывал имена чекбоксов
0
0 / 0 / 0
Регистрация: 11.12.2009
Сообщений: 16
27.12.2009, 16:49  [ТС]
2 webbyte: Ваш пример почему-то у меня не заработал... :-(
0
7 / 8 / 6
Регистрация: 11.05.2008
Сообщений: 876
27.12.2009, 17:31
Какой браузер?
0
0 / 0 / 1
Регистрация: 14.02.2009
Сообщений: 470
27.12.2009, 21:26
Я так и не понял чего нужно? 'Красиво' установить и сбросить все чекбоксы или разобрать после отправки формы что там все таки было отмечено? Кто мне подскажет другой более эффективный путь для решения второй задачи, чем написал я (в первом ответе здесь) буду признателен (очень вероятно, что я что-то не понимаю).

А вообще яваскрипт не перестает поражать своими возможностями (из вышеприведенных примеров). Век живи - век учись. Кстати, по моему (имхо) Mozilla firebird (под виндами) - лучше Explorera - проверьте, будет работать?
0
0 / 0 / 0
Регистрация: 11.12.2009
Сообщений: 16
27.12.2009, 22:14  [ТС]
2 webbyte: IE 6.0 Win XP

2 vlav: нужно было красиво отметить чебоксы, а потом также красиво разобрать что было отмечено. Просто в самом первом посте чебоксы отмечались красиво тока когда были названы одинаково, отсюда возникал вопрос как красиво разобрать какие из них отмечены. Потом я внимательно перечитал MSDN ;-) и понял что можно красиво отметить чекбоксы даже с разными именами. А если имена у них вида a1,a2..aN то разбираются они на php элементарным циклом.

Еще раз всем спасибо!
0
0 / 0 / 1
Регистрация: 14.02.2009
Сообщений: 470
27.12.2009, 23:01
Извини, а как выглядит этот элементарный цикл? (у всех свои проблемы) - а... нужно перебирать argv? А если групп таких параметров несколько и число элементов в каждой группе неизвестно? Ну, в общем, понятно. Просто у меня как раз была задача передать все значения SRC элементов IMG на странице, у которых свойство BORDER>0. С чекбоксами, конечно, проще.
Хотя твою задачу можно было решить и как я говорил, независимо от того, как называются чекбоксы.
0
7 / 8 / 6
Регистрация: 11.05.2008
Сообщений: 876
28.12.2009, 01:38
Изучаем ХТМЛ
Помечайте группы чек-боксов не а1..aN, а просто для всех чекбоксов в группе ставьте name=a[]. Таким образом, передастся массив вида
a=array(
0=>value1
..
r=>valueR
)
который разбирается еще легче.

2 Стран-Джеар.
Ты уверен, что верно перенес мой код и не забыл атрибуту namе формы присвоить значение name=form? Потому как писалось все именно в той конфигурации, которую ты указал.

2 vlav
Для Мозиллы немного скрипт видоизменяется.
0
0 / 0 / 0
Регистрация: 03.12.2009
Сообщений: 26
30.12.2009, 12:28
Насколько я помню, к элементам формы можно обращаться не по имени, а по номеру:
JavaScript
1
2
3
4
5
for (var i = 0; i < sk_checkboxov; i++) {
   if (document.forms[0].elements[i].checked == 1) {
     document.forms[0].elements[i].checked = 0;
   }
}
Так, кажется... Правда, не знаю, как подобное произведения будет работать, если среди формы будут не только чекбоксы...
0
7 / 8 / 6
Регистрация: 11.05.2008
Сообщений: 876
30.12.2009, 17:29
А как..отслеживай .type
0
0 / 0 / 0
Регистрация: 03.12.2009
Сообщений: 26
31.12.2009, 09:49
Типа так?
JavaScript
1
if (document.forms[0].elements[i].type == 'checkbox') {...}
Не знал, не знал
0
7 / 8 / 6
Регистрация: 11.05.2008
Сообщений: 876
31.12.2009, 11:40
Как много нам открытий чудных готовит просвещенья век..(с)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
31.12.2009, 11:40
Помогаю со студенческими работами здесь

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

Определить, какие из этих имен встречаются во всех классах, какие есть хотя бы в двух классах, и какие - только в одном классе
Для каждого из четырех классов указаны имена девочек, обучающихся в них. Определить, какие из этих имен встречаются во всех классах, какие...

Определить, какие приложения свернуты в трей, а какие - на панель задач
Как узнать какие приложения свёрнуты в системный try , а какие на панель ?

Для абстрактного класса определить какие методы должны быть абстрактными, а какие обычными.
1. Полную структуру классов и их взаимосвязь продумать самостоятельно. 2. Для абстрактного класса определить какие методы должны быть...

Даны прямые, определить, какие параллельные, а какие нет
Даны уравнения прямых а1х+b1y=c1, a2x+b12y=c2, a3x+b3y=c3. Выяснить, какие из этих прямых параллельны, а какие - нет Помогите пожалуйста...


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

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Новые блоги и статьи
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru