Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Кликнув по чекбоксу отмечаются все остальные.
 
 автор: off   (09.10.2005 в 13:43)   письмо автору
 
 

ПОМОГИТЕ ПЛИЗ!!!

есть главный чекбокс


<input type=checkbox name=head>


есть еще 3 чекобокса (по умолчанию они disabled).Кол-во чекбоксов может быть разное.


<input type=checkbox name=1 disabled>
<input type=checkbox name=2 disabled>
<input type=checkbox name=3 disabled>


Как сделать чтобы при кликаньи на главный чекбокс(в положение checked) все остальные становятся enabled и checked, а при кликаньи на главный чекбокс(в положение unchecked) все остальные становятся disabled и unchecked.

Помогите плиз! Java script не знаю, а сделать очень нужно!

   
 
 автор: codexomega   (09.10.2005 в 14:01)   письмо автору
 
   для: off   (09.10.2005 в 13:43)
 

http://softtime.ru/forum/read.php?id_forum=4&id_theme=6855&page=5

   
 
 автор: off   (10.10.2005 в 16:11)   письмо автору
 
   для: codexomega   (09.10.2005 в 14:01)
 

Спасибо. Но как его модернизировать, чтобы когда главный чекбокс off - все поля disabled?

И как это сделать без тега form? Помогите плиз! Очень надо!

   
 
 автор: codexomega   (10.10.2005 в 20:36)   письмо автору
 
   для: off   (10.10.2005 в 16:11)
 


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); 
            field[j].enabled = (field[j].enabled===true?false:true); 
        }
    } 
    else{ 
        for (j = 0; j < field.length; j++){ 
            field[j].checked = true; 
            document.form1.check_all.checked=true; 
        } 
    } 
}

   
 
 автор: off   (10.10.2005 в 21:23)   письмо автору
 
   для: codexomega   (10.10.2005 в 20:36)
 

спасибо. но мне надо немнжко другое.

Как сделать чтобы при кликаньи на главный чекбокс(в положение on) все остальные становятся enabled и checked, а при кликаньи на главный чекбокс(в положение off) все остальные становятся disabled и unchecked.

И как это сделать без тега form (может при помощи id)?

   
 
 автор: codexomega   (11.10.2005 в 22:55)   письмо автору
 
   для: off   (10.10.2005 в 21:23)
 

Теперь они становятся disabled.


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>CheckBoxes</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<script language="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);
            field[j].disabled = (field[j].disabled===true?false:true);
        }
    }
    else{
        for (j = 0; j < field.length; j++){
            field[j].checked = true;
            field[j].disabled = false;
            document.form1.check_all.checked=true;
        }
    }
}</script>
</head>
<body>
<form name="form1" id="form1" method="post" action="">
<table width="100%"  border="1" cellspacing="0" cellpadding="0">
  <tr>
    <td bgcolor="#003399"><input type="checkbox" name="check_all" value="check_all" onclick="checkAll(document.form1.list)"/></td>
    <td>cell 1</td>
    <td>cell 2</td>
  </tr>
  <tr>
    <td><input type="checkbox" name="list" value="1" disabled/></td>
    <td>cell 3</td>
    <td>cell 4</td>
  </tr>
  <tr>
    <td><input type="checkbox" name="list" value="2" disabled/></td>
    <td>cell 5</td>
    <td>cell 6</td>
  </tr>
  <tr>
    <td><input type="checkbox" name="list" value="3" disabled/></td>
    <td>cell 7</td>
    <td>cell 8</td>
  </tr>
  <tr>
    <td><input type="checkbox" name="list" value="4" disabled/></td>
    <td>cell 9</td>
    <td>cell 10</td>
  </tr>
</table>
</form>
</body>
</html>


Только чем вам форма мешает, не могу понять. С ней намного проще.
Притом вас никто не заставляет в форму вкладывать действие. Она может ничего не делать и это будет вполне корректно.

   
 
 автор: 12345   (12.10.2005 в 02:00)   письмо автору
 
   для: codexomega   (11.10.2005 в 22:55)
 

Интереснее так:

<input type=checkbox class=group name=c1 disabled><br> 
<input type=checkbox class=group name=c2 disabled><br>
<input type=checkbox class=group name=c3 disabled><br>
<br>
<input type=checkbox name=common onclick=f(this)>
<script>function f(t){for(i in (d=document).all.tags('input')){if(d.all[i].className=='group'){with(d.all[i]){disabled=!(checked=t.checked);}}}}</script>


(name=число работать не будет)

   
 
 автор: off   (12.10.2005 в 20:27)   письмо автору
 
   для: 12345   (12.10.2005 в 02:00)
 

Огромное спасибо и codexomega и 12345!!!!

codexomega, нужно без тега form тк. есть несколько файлов с чекбоксами и они все вставляются includ'ом в одну большую форму. А как известно нельзя чтобы тэг form был в теге form.

Решил изпользовать вариант 12345. Огромное спасибо.

Только помоги еще немножко плиз :)

Как с помощью твоего кода сделать:

Если главный чекбокс checked все оставльные enabled, если нет, то disabled, причем изначально чекбксы (в том числе и главый) могут быть разными (т.е одни checked другие unchecked)...


Напрмер изначально в таком варианте:
<input type=checkbox class=group name=c1><br> 
<input type=checkbox class=group name=c2 checked><br> 
<input type=checkbox class=group name=c3><br> 
<br> 
<input type=checkbox name=common onclick=f(this)> 

Это всего лишь пример... :)


ПЛИЗЗ!!! Еще раз огромное спасибо!

   
 
 автор: 12345   (12.10.2005 в 22:56)   письмо автору
 
   для: off   (12.10.2005 в 20:27)
 

Так даже проще по коду : )

<body onLoad=f(d.all.common)>
<input type=checkbox class=group name=c1><br> 
<input type=checkbox class=group name=c2 checked><br>
<input type=checkbox class=group name=c3><br>
<br>
<input type=checkbox name=common onclick=f(this) checked>
<script>d=document;
function f(t){for(i in d.all.tags('input')){if(d.all[i].className=='group'){with(d.all[i]){disabled=!t.checked;}}}}
</script>


В зависимости от того, checked ли 'common', остальные чекбоксы устанавливаются в не-disabled.

   
 
 автор: off   (13.10.2005 в 21:42)   письмо автору
 
   для: 12345   (12.10.2005 в 22:56)
 

А можно как нить без <body>? Тк этих блоков (главный чекбокс и остальные) несколько,и они находятся в разных файлах и подключаются includ'ом в один главный (где body уже есть).

   
 
 автор: 12345   (13.10.2005 в 23:14)   письмо автору
 
   для: off   (13.10.2005 в 21:42)
 

<body> весьма желательно, потому что оно даёт знак загрузки всей страницы и (по идее) готовность структуры документа. Без него надо проверить на существование самого позднего анализируемого элемента (input; может быть, d.all.length ?) и запустить выставление f(d.all.common), если существует. Но не уверен, что будет корректно работать при разных скоростях загрузки. Проверь, но не советую:

<script>d=document;
function waitLoad(){
ww=setTimeout("if(typeof(d.all.length)!='undefined')f(d.all.common);else waitLoad();",500);}
function f(t){for(i in d.all.tags('input'))if(d.all[i].className=='group')with(d.all[i])disabled=!t.checked;}
(заодно убраны лишние скобки)

   
 
 автор: off   (20.10.2005 в 18:00)   письмо автору
 
   для: 12345   (13.10.2005 в 23:14)
 

Огромное спасибо.Выручил!!
Все работает.

Вместо body onload сделал img onload/

   
 
 автор: 12345   (20.10.2005 в 20:28)   письмо автору
 
   для: off   (20.10.2005 в 18:00)
 

Это может некорректно работать. Сделай лучше так, это то же, что в body ставить:

d.onload=function(){f(d.all.common);}

   
 
 автор: sidPR   (25.10.2005 в 20:24)   письмо автору
 
   для: 12345   (20.10.2005 в 20:28)
 

уважаемый 12345 а реально ли зделать чтобы числа работали в name=

   
 
 автор: 12345   (25.10.2005 в 20:36)   письмо автору
 
   для: sidPR   (25.10.2005 в 20:24)
 

А проверьте сами. Как элемент формы числа отправляются, но через document.all вызываться не хотят. Может, найдёте альтернативу.

   
 
 автор: sidPR   (25.10.2005 в 21:05)   письмо автору
 
   для: 12345   (25.10.2005 в 20:36)
 

Хм... а как тагда зделать вот у меня система положем
<input type=checkbox class=group name=c$id value='off'>
$id номер поля из sql
$ids = "c$id";
ну и предположем
if (isset(c$id))
{
предположим добовляет в базу
}
а как зделать все чтобы в базу добовляло если все выделены?

   
 
 автор: 12345   (26.10.2005 в 01:53)   письмо автору
 
   для: sidPR   (25.10.2005 в 21:05)
 

(value='off' не пишут, оно по умолчанию вырабатывается on или off.)

Если выделены в смысле checked, то при передаче формы в $_GET будут все c1,c2, ... с "=on". isset() будут все, которые имеются в форме. Поэтому так проверять не имеет смысла - надо

if($_GET['c'.$id]=='on')добавить в базу, если выделен.

А вопрос в чём?

   
 
 автор: sidPR   (26.10.2005 в 10:11)   письмо автору
 
   для: 12345   (26.10.2005 в 01:53)
 

Да у меня тут такая проблема немогу придумать как зделать передачу данных в другой файл
тоесть к примеру у меня идут

Index.php

<input type=checkbox class=group name=s$id value='off'>
  <form name='form1' id='form1' method='post' action='add.php?$id'> <br>
   
    <table border='1' cellpadding='4' cellspacing='0' style='border-collapse: collapse'  id='AutoNumber1'>  
    <tr> 
   
    <td align='center'>  
      <input type=checkbox name=common onclick=f(this) value='off'></td>



$id это номер поля ..в mysql

add.php


mysql_pconnect("$host","$user","$password") or die("Немогу приконектиться к SQL-server");
mysql_select_db("$database"); 
           
 $sql = "UPDATE '$table' SET 'status' = 'enable' WHERE 'id' = '$id' LIMIT 1" ;
  mysql_query($sql);
header( "Location: scrin.php" ); 


Во как мне в add.php передать инфу от выделенных чекбоксов ? :(

   
 
 автор: sidPR   (26.10.2005 в 10:22)   письмо автору
 
   для: sidPR   (26.10.2005 в 10:11)
 

точнее как узнать ID ВЫделеных :\

   
 
 автор: 12345   (26.10.2005 в 12:49)   письмо автору
 
   для: sidPR   (26.10.2005 в 10:22)
 

У тебя нет у чекбоксов id, поэтому ты не можешь их узнать : )
Даже если бы были (<input ... checkbox id=aaa name=bbb>), форма передаст только bbb=on или bbb=off. Т.е. ты узнаёшь name его и .checked. Так как ты знаешь все name, которые послал на страницу, isset() не имеет большого смысла. Ещё раз повторюсь, что value=xxx при чекбоксе не имеет никакого смысла.

Если надо передать больше информации при выборе чекбокса, придётся использовать другие поля формы.

Да, а по вопросу - ты узнаёшь по значениям хэша $_GET, равным "on", все _ name _ выделенных чекбоксов (но не id).

   
 
 автор: sidPR   (26.10.2005 в 12:56)   письмо автору
 
   для: 12345   (26.10.2005 в 12:49)
 

а какже мне быть я зделал типо как в пхпмуадмине чебоксы и при выделении их я хотел зделать кнопочку удаления и добовления и вот незнаю как зделать вот :( ... как передать значения =\

   
 
 автор: sidPR   (26.10.2005 в 14:12)   письмо автору
 
   для: sidPR   (26.10.2005 в 12:56)
 

стоп можно же зделать типо того
вот отмеченны какието чекбоксы ну и передаеться инфа в этот файл
положем все чекбоксы name="s$id" а тоесть все имена будут такого вида s12 ну все числа
из етого следует что можно воспользоваться регуляркой

типо $id = "Вырезаем букву s из всех немов";
ну и получаеться что $id = 12
ну а дальше идет мол конект

mysql_pconnect("$host","$user","$password") or die("Немогу приконектиться к SQL-server"); 
mysql_select_db("$database"); 
            
$sql = "UPDATE '$table' SET 'status' = 'enable' WHERE 'id' = '$id' LIMIT 1" ; 
  mysql_query($sql); 
header( "Location: scrin.php" ); 


Подскажите как зделать такое регулярное выражение если я правильно мыслю должно получиться же веть =\

   
 
 автор: 12345   (26.10.2005 в 15:04)   письмо автору
 
   для: sidPR   (26.10.2005 в 14:12)
 

Вообще, тут я вижу некоторое непонимание того, зачем нужно имя-не-число при name. Оно нужно было только для JS. Если ты используешь его для формы, то ничего не мешает писать число.
Далее, ты получаешь хеш-таблицу в $_GET при приёме формы. Отыскиваешь в ней имена-числа, и вот тебе те $id, которые ставишь в запрос.
Если даже делаешь имя вида $nn ==== "s$id", то Р.Выр. не надо, достаточно просто $id=substr($nn,1); (Как доставать $nn из $_GET, это уж сам пиши.)

   
 
 автор: sidPR   (26.10.2005 в 16:55)   письмо автору
 
   для: 12345   (26.10.2005 в 15:04)
 

я не ас .. незнаю как все это зделать можете написать как мне это зделать? пожалуйста заранее благодарен!

   
 
 автор: 12345   (26.10.2005 в 17:44)   письмо автору
 
   для: sidPR   (26.10.2005 в 16:55)
 

Не могу, т.к. задачи не знаю и она не моя. Форум используется для подсказок, обмена опытом или самовыражения. Одно из этого я уже сделал : )

   
 
 автор: sidPR   (26.10.2005 в 19:48)   письмо автору
 
   для: 12345   (26.10.2005 в 17:44)
 

Тогда подскажите хотя бы каким макаром ID передасться в другой файл вот у меня
есть пару чеков выделенных в из формы то только известной будет ее Name и off или on ....

   
 
 автор: 12345   (26.10.2005 в 20:01)   письмо автору
 
   для: sidPR   (26.10.2005 в 19:48)
 

Про какой ID идёт речь? $id или id из HTML? Если второе, то...
Нет смысла делать эту операцию буквально. Ты же знаешь соответствие name и id, поэтому из name его получаешь.
Если $id, то...
он есть часть name, которое извлекаешь по array_keys( $_GET) . (См. мануал PHP) Возможно, все затруднения от незнания того, что передаётся в $_GET ? Туда передаются все параметры формы в парах вида name - value.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования