Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Выделение всех полей Checkbox в их массиве

2.2K
23 ноября 2002 года
Greendrake
6 / / 10.11.2002
У меня в форме, создаваемой скриптом php, есть список студентов, напротив фамилии каждого стоит вот такой checkbox:
print "<input type=checkbox name=students[] value=\"".$stud[id]."\">";
Всем присваивать одно и то же name пришлось для того, чтобы потом можно было обратиться как к элементам массива.
Но тело не в этом. Тело в том, что я хочу предусмотреть на странице возможность выделения/снятия выделения всех студентов сразу. Ну, как водится, создал вот такую функцию на java script:
function toggle() {
if {form.students[0].checked==true)
{ for (i=0;i<form.students.length;i++) {form.students.checked=false}}
else {for (i=0;i<form.students.length;i++) {form.students.checked=true}}
}
И IE мне выдаёт, типа нету такого объекта form.students.0
Как быть?
283
25 ноября 2002 года
Alone
910 / / 20.11.2002
помоему вы перепутали checkbox с radio
checkbox нельзя объединят в один массив
лучше всего каждому checkbox присвоить имя students_0, students_1 ...
а потом зная сколько этих полей
в js к ним обращатся через eval
чтото типа:
for (i=0;i<12;i++)
{
eval ('form.students_'+i+'.checked=true');
}
2.9K
25 ноября 2002 года
Walfram
2 / / 25.11.2002
<HTML>
<HEAD>
<SCRIPT name="javascript">
function checkAll(check) {
var boxes = document.testForm.elements.length;
if(check) {
for(i=0; i<boxes; i++) {
document.testForm.elements.checked = true;
}
} else {
for(i=0; i<boxes; i++) {
document.testForm.elements.checked = false;
}
}
}
</SCRIPT>

</HEAD>
<BODY>

<FORM name="testForm">
<INPUT type="checkbox" name="students[]" value="1">1

<INPUT type="checkbox" name="students[]" value="2">2

<INPUT type="checkbox" name="students[]" value="3">3

<INPUT type="checkbox" name="students[]" value="4">4

<INPUT type="checkbox" name="students[]" value="5">5

</FORM>

<INPUT type="button" value="check all" onClick="checkAll(true);">
<INPUT type="button" value="uncheck all" onClick="checkAll(false);">

</BODY>
283
26 ноября 2002 года
Alone
910 / / 20.11.2002
Очень не удачный премер :(
А если в форме будет другие элементы к каторым применим checked но которые не нужно выделять со всеми
но это не главное
главное здесь 5 полей с одинаковыми именами
на сервере удастся получить значение только первой (или последней...)
2.9K
26 ноября 2002 года
Walfram
2 / / 25.11.2002
test.html

<HTML>
<HEAD>
<SCRIPT name="javascript">

function checkAll(check, chk_name) {

var elements = document.testForm.elements.length;

if(check) {
for(i=0; i<elements; i++)
if(document.testForm.elements.type == chk_name)
document.testForm.elements.checked = true;
} else {
for(i=0; i<elements; i++)
if(document.testForm.elements.type == chk_name)
document.testForm.elements.checked = false;
}
}
</SCRIPT>

</HEAD>
<BODY>

<FORM name="testForm" action="process.php" method="post">
<INPUT type="hidden" name="boxes" value="5">
<INPUT type="checkbox" name="students[]" value="1st">1

<INPUT type="checkbox" name="students[]" value="2nd">2

<INPUT type="checkbox" name="students[]" value="3rd">3

<INPUT type="checkbox" name="students[]" value="4th">4

<INPUT type="checkbox" name="students[]" value="5th">5

<INPUT type="submit" name="button" value="Send">
</FORM>

<INPUT type="button" value="check all" onClick="checkAll(true, 'checkbox');">
<INPUT type="button" value="uncheck all" onClick="checkAll(false, 'checkbox');">

</BODY>

------------------
process.php

<?php


if(isset($button)) {
if(sizeof($students)!=0) {
for($i=0; $i<$boxes; $i++) {
if(isset($students[$i]))
echo "Student: '".$students[$i]."'
";
}
} else {
echo "No selected students...
";
}
} else {
echo "no button is set...
";
}

?>
2.2K
29 ноября 2002 года
Greendrake
6 / / 10.11.2002
Спасибо за ценные советы. Используя их, я всё-таки соорудил то что надо. Последний пример действительно не очень удачен - на странице у меня есть ещё поля checkbox кроме списка студентов, и их выделять не нужно.
Сработало следующее решение: имя checkbox по прежнему students[]. Обращаюсь к ним ко всем как в последнем примере через form.elements, но отсеиваю не по типу checkbox, а по form.elements.name.substr(0,8)=='student' :)
9.6K
17 декабря 2004 года
ezh
1 / / 17.12.2004
Блин! у меня такая же шняга :( неужели во всем JavaScript'e нет такой возможности
кстати данные из формочки с checkbox"ами очень хорошо передались по action form и легко обработались php.

вот только хочется знать сколько именно этих checkbox'ов было отмечено. потому как они попорядку заполняются
<input type=checkbox name=pr[]>1
<input type=checkbox name=pr[]>2
<input type=checkbox name=pr[]>3
если отметить 1 и 3 будет создан массив из двух элементов $pr[0] и $pr[1]...
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог