Проблема с обработкой формы с checkbox'ами

Yura

Новичок
Проблема с обработкой формы с checkbox'ами

Из таблицы MYSQL выводятся записи в одну колонку. Возле каждой записи - чекбокс. Чекбоксы нужны для того, чтобы я мог выбрать одно или несколько записей и потом нажав под этими записями на кнопку "Удалить" либо "Скрыть/отобразить" и т.д. выполнить нужное запрошенное действие (т.е., соответственно, удаление, либо с крытие и т.д.). При нажатии на кнопку должна с помощью javascript осуществляться проверка, выбраны ли какие-то записи. Если нет, то window.alert("Ничего не выбрано"); и далее ничего не происходит; если да, то дальше РНР. Проблема в следующем. Если нажимаю на эту кнопку, то все работает нормально; если выбираю чекбоксы (один или несколько), потом захотел снять выделение, то при снятии последнего выделения именно последнее (т.е., любое одно оставшееся выделение) не снимается, а появляется сообщение, что Ничего не выбрано.
Вот сама функция проверки:

function checkedCheckboxes()
{
var elem=rowsDeleteForm.elements;
var s=0;

for(i=0; i<elem.length; i++)
{

if (rowsDeleteForm.elements.checked==true) s=s+1;

}


if (s==0) {
window.alert("Не выбрана ни одна запись");

return false;
}
else {

return true;

}

}

Подскажите, как решить проблему.
 

Yura

Новичок
PHP:
<form action="changenew.php" name="rowsDeleteForm" id="rowsDeleteForm" method="post" onClick="return (checkedCheckboxes());">
<input type="hidden" name="num" value="<?=$num ?>">
<?
   for ($i=0; $i<$num; $i++)
    {
	  $chi="ch".$i;
      $news = mysql_fetch_array($new);
   echo "<tr><td align='center'><input type='checkbox' id=\"id_rows_to_delete$i\" onclick=\"copyCheckboxesRange('rowsDeleteForm', 'id_rows_to_delete$i','l');\" name=".$chi." value=".$news['n_id']."></td><td>".stripslashes($news['n_title'])."</td>
            </tr>";

    }
?>
<input type="submit" style="background: url(../images/drop.png) no-repeat; width:22; border:0px; cursor:hand;" name="submit_mult_delete" value="" title="Удалить">&nbsp;&nbsp;
		<input type="submit" style="background: url(../images/visible.gif) no-repeat; width:66; border:0px; cursor:hand;" name="submit_mult_visible" value="" title="Скрыть/Отобразить">&nbsp;&nbsp;
		<input type="submit" style="background: url(../images/week.gif) no-repeat; width:56; border:0px; cursor:hand;" name="submit_mult_week" value="" title="Новость недели">
		</p></td></tr></form>
 

Yura

Новичок
При событии onclick вызываю checkedCheckboxes(). В ней подсчитывается количество выбранных элементов s. Если s=0, то window.alert("Не выбрана ни одна запись");
Если я неправильно делаю (что скорее всего), подскажите как надо.
 

Гравицапа

elbirret elcno
Yura
Ну а когды ты чекбоксы выбираешь/снимаешь выделение, ты что делаешь мышкой?
Почитай про события доступные для тега form, там не только onclick есть.
 

Yura

Новичок
Отлично! Поставил onsubmit вместо onclick. Все работает. Гравицапа, спасибо за помощь!

-~{}~ 26.03.07 19:32:

Возникла еще одна проблемка. Мне нужно, чтобы после того как выделены одно или более элементов и сразу после нажатия на ОДНУ из кнопок "Удалить", "Скрыть" или "Новость недели" появлялся вопрос для подтверждения "Действительно ли Вы хотите удалить / скрыть и т.д." Проблема в следующем. Если я пишу confirm ... где input type=submit, то в случае, если ничего не выбрано появляется сначала сообщение с просьбой подтвердить, а потом о том, что не выбрано ни одно значение. А мне нужно наоборот. Если пишу confirm ... в <form .... , то не соображу как передать в функцию, какая кнопка нажата, чтобы выдать нужное сообщение. Как вообще в этом случае правильно нужно делать?
 

Гравицапа

elbirret elcno
Yura
Что тебе мешаеть повесить на onclick у кнопки функцию типа
Код:
  function newConfirm(action) {
        if (checkedCheckboxes()) {
            return confirm('Are you really want to ' + action + '?');
        } 
        return false;
    }
?
 
Сверху