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

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

26.12.2009, 16:34. Показов 3697. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru