Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Проверка, помечен ли хоть один чекбокс (https://javascript.ru/forum/dom-window/57515-proverka-pomechen-li-khot-odin-chekboks.html)

Эдди 06.08.2015 20:50

Проверка, помечен ли хоть один чекбокс
 
Что за наваждение. Простенькая задачка. И здесь препоны.
Да, сегодня не мой день.

Пожалуйста, посмотрите, правильная ли функция. Работает через раз.

<form name="types" ... ... ... onsubmit="return sub()">
checkbox class="chekbox"
checkbox class="chekbox"
checkbox class="chekbox"
...
function sub() {
  var res = true;
  var checkbox = document.getElementsByClassName('checkbox');
  for(var i = 0; i < checkbox.length; i++) {
    if(checkbox[i].checked==true) {
      var c=1;
      break;
    }
    if(c!=1) {
      alert('Выберите хотя бы один чекбокс!');
      res = false;
    }
    return res;
  }
}


Использую getElementsByClassName поскольку чекбоксы по-любому уже имеют такой класс, необходимый для другой функции.

рони 06.08.2015 21:11

Эдди,
14 строка не на своём месте
выбирайте сразу отмеченный - и строки с for станут ненужны

Эдди 06.08.2015 21:21

Цитата:

Сообщение от рони (Сообщение 383013)
Эдди,
14 строка не на своём месте
выбирайте сразу отмеченный - и строки с for станут ненужны

Спасибо. Теперь все ОК.
Вот не люблю я стиль javascript:

татата {

}

ЛучшеЖ
тадада
{

}
Все вылезает сразу наружу.
:)

рони 06.08.2015 21:23

Эдди,
function sub() {
    var a = !!document.querySelector(".chekbox:checked");
    a || alert("Выберите хотя бы один чекбокс!");
    return a
};

Эдди 06.08.2015 21:32

Цитата:

Сообщение от рони (Сообщение 383015)
Эдди,
function sub() {
    var a = !!document.querySelector(".chekbox:checked");
    a || alert("Выберите хотя бы один чекбокс!");
    return a
};

Сложновато для меня. Но этот код намного короче, и это хорошо.

Эдди 06.08.2015 23:18

Цитата:

Сообщение от Эдди (Сообщение 383016)
Сложновато для меня. Но этот код намного короче, и это хорошо.

Не работает.
Прочел кое что о querySelector - очень интересный метод. Не знал.
Надо подробнее изучить.
Хотя JS использую очень редко.

А пока пусть в цикле работает. Да и, как правило, в 90% случаев первый чекбокс по любому отмечается.

рони 06.08.2015 23:27

отметить хотя бы один чекбокс
 
Цитата:

Сообщение от Эдди
Не работает.

ну не работает и ладно :cray: может у кого заработает
<!DOCTYPE HTML>

<html>

<head>
  <title>Untitled</title>
  <meta charset="utf-8">
</head>

<body>
<form name="types" onsubmit="return sub()" action="http://javascript.ru/">
<input name="" type="checkbox" class="chekbox">
<input name="" type="checkbox" class="chekbox">
<input name="" type="checkbox" class="chekbox">
<input name="" type="submit" value="send">
</form>
 <script>
function sub() {
    var a = !!document.querySelector(".chekbox:checked");
    a || alert("Выберите хотя бы один чекбокс!");
    return a
};
 </script>
</body>
</html>

Эдди 06.08.2015 23:57

А в отдельном файле работает. Ладно. Буду искать, что у меня там мешает.


Часовой пояс GMT +3, время: 06:58.