Перебор флажков с помощью Javascript

#javascript #forms #loops #checkbox

#javascript #формы #циклы #флажок

Вопрос:

Я пытался использовать образцы JavaScript, которые я нашел здесь и в других местах. Проблема в том, что я использую табличный элемент управления, работающий на сервере, поэтому используемый мной JavaScript не распознает флажки, которые также находятся на стороне сервера. Я продолжал получать одно и то же сообщение об ошибке снова и снова. Я получил 20 строк по 2 столбца в каждой, по одному для флажка и по одному для инструкции, которую пользователь должен подтвердить, установив флажок, прежде чем они смогут отправить. Пользователь должен физически проверять каждый флажок. Если какой-либо флажок не установлен, то я хотел бы видеть всплывающее сообщение о том, что они должны установить все флажки, иначе я делаю перенаправление на другую страницу, конечно, все это при событии нажатия кнопки. Все это в Visual Studio 2010, с использованием C #, серверной частью является SQL Server.

Вот пример JS, который я использовал:

 function checkCheckBoxes() {
  if (document.frmTest. CheckBox1.checked == false amp;amp;
      document.frmTest. CheckBox2.checked == false amp;amp;
      document.frmTest. CheckBox3.checked == false amp;amp;
      document.frmTest. CheckBox4.checked == false amp;amp;
      document.frmTest. CheckBox5.checked == false amp;amp;)
  {
    alert ('You must check all the checkboxes!');
    return false;
  }else{
    return true;
  }
}
 
  

затем,

 <form onsubmit="return checkCheckBoxes();" action="">
<input type="checkbox" name=" CheckBox1" value="1">
<input type="checkbox" name=" CheckBox2" value="2">
<input type="checkbox" name=" CheckBox3" value="3">
<input type="checkbox" name=" CheckBox4" value="4">
<input type="checkbox" name=" CheckBox5" value="5">
<input type="submit" value="Submit!" />
</form>
  

Но я понял, что флажки могут быть не серверным управлением, а элементами управления JavaScript. Спасибо.

Комментарии:

1. Все ли флажки разделены или они генерируются элементом управления данными, таким как Repeater ?

Ответ №1:

Вам нужно что-то вроде этого

 var pass = true;

for (var i = 0; i < form.elements.length; i   ) 
{
    if (form.elements[i].type == 'checkbox')
    {
        if (form.elements[i].checked == false)
        {
            pass = false;
        }
    }
}

if(!pass)
{
    alert ('You must check all the checkboxes!');
}

return pass;
  

Надеюсь, это поможет.

Ответ №2:

Вы можете получить HTML-идентификатор флажков, используя свойство C # ClientID. Вставьте этот идентификатор в свой Javascript, и вы сможете устанавливать соответствующие флажки и делать с ними все, что вам заблагорассудится.

Ответ №3:

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

 function checkCheckboxes(){
   if(document.querySelectorAll('input[type="checkbox"]:not(:checked)').length > 0){
     alert("all checkboxes must be checked");
     return false;
   } else{
     return true;
   }
}
  

Примечание: это будет работать только в современных браузерах Firefox 3.1 , IE8 (только в режиме стандартов IE8) и Safari 3.1