|
|
|
|
checkbox – создает поле ввода для атрибутов типа Boolean ("да"/"нет") или для атрибутов, которые могут одновременно принимать несколько значений. Эти атрибуты представляют собой несколько полей checkbox, которые могут иметь одинаковые имена. Каждое выбранное поле chackbox создает отдельную пару name/value в информации, посылаемой на сервер, даже если результатом будут дублирующиеся имена.
|
все время использовал уникальные имена...тут сказаны что для разных checkbox имена могут быть одинаковы...это как??? | |
|
|
|
|
|
|
|
для: P@Sol
(30.08.2005 в 15:13)
| | Если официально группы могут составляться только из радио-кнопок, то чекбоксы тоже можно под это приспособить. Часто можно встретить формуляры с несколькими такими группами. Одна группа, это например цвет, вторая, марка машины, итд.
У каждого чекбокса есть свои: name,id и value.
Имя может быть одинаковым для всей группы. Тогда как если надо, можно расставить разный id для всех, и разный value.
Проверить функциональность чекбоксов с одинаковым именем, можно здесь:
http://www.softtime.ru/forum/read.php?id_forum=4&id_theme=6855&page=1
Если я в чём либо ошибаюсь, прошу поправить. | |
|
|
|
|
|
|
|
для: P@Sol
(30.08.2005 в 15:13)
| |
Элемент checkbox (флажок) имеет очень специфическую задачу при разработке современного пользовательского интерфейса: он является переключателем между состояниями "включено" и "выклюсено". Как и флажок на стандартной анкете, галочка в квадратике указывает на то, что данный параметр верен или его следует включить для данного конкретного случая. Если флажок не установлен или квадратик пуст, соответсвующий параметр не верен или этот параметр следует исключить. Если груперруются два или более флажков, они не должны взаимодействовать: то есть каждый из них задаётся независемо друг от друга.
|
| |
|
|
|
|
|
|
|
для: Crux
(30.08.2005 в 21:36)
| | а вот о том, что их можно групировать я не знал...
ответте вот на такой вопрос, в каком виде придут данные от сгруперованных чекбоксов на сервер? | |
|
|
|
|
|
|
|
для: P@Sol
(30.08.2005 в 15:13)
| | Ну да, это распространнённая практика, когда их 100 штук на страницы, на них имён не напасёшся поэтому их оформляют в виде массива
<form action=handler.php method=post>
<input type='checkbox' name='type[]' value='1'>Первый флажок<br>
<input type='checkbox' name='type[]' value='2'>Второй флажок<br>
<input type='checkbox' name='type[]' value='3'>Третий флажок<br>
<input type='checkbox' name='type[]' value='4'>Четвёртый флажок<br>
<input type='checkbox' name='type[]' value='5'>Пятый флажок<br>
<input type='checkbox' name='type[]' value='6'>Шестой флажок<br>
<input type='checkbox' name='type[]' value='7'>Седьмой флажок<br>
<input type=submit>
</form>
|
Пример обработчика, приводится в теме по ссылке http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=427 | |
|
|
|
|
|
|
|
для: cheops
(01.09.2005 в 19:20)
| | нет...
когда имя задаётся как массив с этим всё понятно.
а вот когда у чекбоксов просто одинаковые имена, как в примере от codexomega http://www.softtime.ru/forum/read.php?id_forum=4&id_theme=6855&page=1,
что с этим то делать? | |
|
|
|
|
|
|
|
для: Crux
(01.09.2005 в 20:22)
| | Чего-то не знай... а больше никаких телодвижений по группировке делать не нужно? Я попробовал вывести дамп $_POST в PHP-обработчике, он выводит только значение последнего отмеченного флажка
Array
(
[check_all] => check_all
[list] => 4
[send] => Удалить
)
|
Для получения POST-содержимого использовался код
<?php
print_r($_POST);
?>
|
| |
|
|
|
|
|
|
|
для: cheops
(01.09.2005 в 20:58)
| | вот и я о том же...
Вывод:
Ипользовать одинаковые имена для чекбоксов можно и JavaScript даже что то там с ними может далать, но вот использовать такие чекбосы для передачи инфы используя методы GET или POST уже становится неудобным и даже можно сказать невозможным. | |
|
|
|
|
|
|
|
для: Crux
(01.09.2005 в 21:07)
| | О том , как была использована функция checkAll() в моем приложении:
Скрипт PHP для удаления данных из БД отмечнных чекбоксами:
<?php
// connect to DB
$link = makeConnection("xxxx","xxxx","xxxx","xxxx");// host,user,password,database
// delete records
if(isset($_POST['deletelist']))
$deletelist = $_POST['deletelist'];
if(!empty($deletelist)){
$deletestr = implode(",",$deletelist);
mysql_query("DELETE FROM bookmarks WHERE Bookmark_ID IN ($deletestr)");
// close connection
mysql_close();
//refresh page
echo "<HTML><HEAD><META HTTP-EQUIV='Refresh' CONTENT='0; URL=bookmarks.php'></HEAD></HTML>";
}
?>
|
Сами поля в форме:
...
<td align="center" class="<?php print($bgc);?>" width="10%"><input type="checkbox" name="deletelist[<?php echo $list['Bookmark_ID']; ?>]" id="deletelist" value="<?php echo $list['Bookmark_ID']; ?>" /></td>
...
|
И функция JavaScript:
function checkAll(field){
nb_checked=0;
for(n=0;n<field.length;n++){
if(field[n].checked==true)
nb_checked++;
}
if(nb_checked == field.length){
for (j = 0; j < field.length; j++)
field[j].checked = (field[j].checked===true?false:true);
}
else{
for (j = 0; j < field.length; j++){
field[j].checked = true;
document.frm_bookmarks.check_all.checked=true;
}
}
}
function deleteRecord(button){
// show confirmation message
var msg = confirm("Are you sure you want to delete selected record(s)?");
// if users accepts, delete selected records
if(msg == true){
button.disabled = true;
document.forms.frm_bookmarks.submit();
}
}
|
Вызов функции:
th width="10%" bgcolor="#000066" ><input type="checkbox" name="check_all" value="check_all" onclick="checkAll(document.frm_bookmarks.deletelist)"/></th>
|
Заметьте что я вместо одинаковых имён, теперь использую одинаковый ID.
Всё работает просто замечательно.
А что, мне нравится своё творение.
Может его увековечить? :-) | |
|
|
|
|
|
|
|
для: codexomega
(02.09.2005 в 03:05)
| | Весь этот пример подтверждает мой вывод. | |
|
|
|