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

  • Автор темы Автор темы Yura
  • Дата начала Дата начала

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;

}

}

Подскажите, как решить проблему.
 
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>
 
При событии onclick вызываю checkedCheckboxes(). В ней подсчитывается количество выбранных элементов s. Если s=0, то window.alert("Не выбрана ни одна запись");
Если я неправильно делаю (что скорее всего), подскажите как надо.
 
Yura
Ну а когды ты чекбоксы выбираешь/снимаешь выделение, ты что делаешь мышкой?
Почитай про события доступные для тега form, там не только onclick есть.
 
Отлично! Поставил onsubmit вместо onclick. Все работает. Гравицапа, спасибо за помощь!

-~{}~ 26.03.07 19:32:

Возникла еще одна проблемка. Мне нужно, чтобы после того как выделены одно или более элементов и сразу после нажатия на ОДНУ из кнопок "Удалить", "Скрыть" или "Новость недели" появлялся вопрос для подтверждения "Действительно ли Вы хотите удалить / скрыть и т.д." Проблема в следующем. Если я пишу confirm ... где input type=submit, то в случае, если ничего не выбрано появляется сначала сообщение с просьбой подтвердить, а потом о том, что не выбрано ни одно значение. А мне нужно наоборот. Если пишу confirm ... в <form .... , то не соображу как передать в функцию, какая кнопка нажата, чтобы выдать нужное сообщение. Как вообще в этом случае правильно нужно делать?
 
Yura
Что тебе мешаеть повесить на onclick у кнопки функцию типа
Код:
  function newConfirm(action) {
        if (checkedCheckboxes()) {
            return confirm('Are you really want to ' + action + '?');
        } 
        return false;
    }
?
 
Сверху