#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