Убедитесь, что хотя бы один флажок установлен перед отправкой

0

Я хочу проверить, проверен ли хотя бы один флажок перед отправкой формы, вот мой код:

<script type="text/javascript">
function validate() {
    if (document.getElementById('checking').checked) {
        alert("checked");
    } else {
        alert("You didn't check it! Let me check it for you.")
    }
}
</script>

<?php foreach (..... ) : ?>

<form name="frm1" id="frm1" method="post" action="next.php" >
...
<input type="checkbox" value="" class="chk"  id="checking"/>
...
 <a href="#" onclick="$(this).closest('form').submit(); validate();"  id="add_view" ><img src="/submit.png"></a>

....

</form>

Мне это нравилось, но, похоже, для меня это не работает, я вижу сообщение, но в то же время он делает представление также о том, что недостаточно проверить, что по крайней мере один флажок установлен?

Теги:

2 ответа

0

Onclick запускает оба события, проверку и отправку. Вы можете поместить подающую часть в скрипт проверки, например, и только отправить форму, если ваша проверка прошла успешно.

EDIT: публикация более полного кода

<html>
  <head>
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
  </head>
  <body>
    <script type="text/javascript">
    function validate() {
      if ($('#checking').is(':checked')) {
        $('#frm1').submit();
      } else {
        alert("You didn't check it! Let me check it for you.");
        $('#checking').attr('checked', true);
      }
    }
    </script>

    <form name="frm1" id="frm1" method="post" action="next.php" >
      <input type="checkbox" value="" class="chk"  id="checking"/>
      <a href="#" onclick="validate(); return false;" id="add_view"><img src="/submit.png"></a>
    </form>
  </body>
</html>

Кроме того, вы должны также рассмотреть возможность добавления проверки на стороне сервера, если ее еще нет, поскольку пользователь может легко изменить HTML/JavaScript на вашей странице во время выполнения с такими инструментами, как FireBug, и представить данные, которые в действительности недействительны.

  • 0
    Извините, это не сработало!
  • 0
    Отлично, обновлен фрагмент. Это работает в моем браузере, поэтому, если у вас есть дополнительные материалы на странице, которые загромождают их и вызывают проблемы, вам также необходимо обновить свой вопрос.
Показать ещё 2 комментария
-1

Я предложил в своем первоначальном ответе, что вам нужно "что-то вроде...".

Вот что должно быть полным рабочим решением. Трюк, который нужно было добавить, состоял в том, что validate должен возвращать true/false, чтобы мы могли решить, следует ли отправлять форму.

<script type="text/javascript">
  function validate() {
    if (document.getElementById('checking').checked) {
      alert("checked");
      return true;
    } else {
      alert("You didn't check it! Let me check it for you.")
      return false;
    }
  }
</script>


<form name="frm1" id="frm1" method="post" action="next.php" >
  <input type="checkbox" value="" class="chk"  id="checking"/>
  <a href="#" onclick="if(validate()) { $(this).closest('form').submit(); } return false;"  id="add_view" ><img src="/submit.png"></a>
</form>

Оригинальный ответ: вам, вероятно, что-то нужно в обработчике кликов, что больше похоже на

if (validate()) { $(this).closest('form').submit(); }

Это должно привести к представлению до тех пор, пока предупреждение не будет закрыто. Если вы хотите, чтобы форма не отправлялась, если флажок не был, вы можете вернуть true/false из validate(), и то же самое будет работать.

  • 0
    Я сделал, когда я увидел ваш ответ, но извините, он не работает ...

Ещё вопросы

Сообщество Overcoder
Наверх
Меню