验证多个复选框

时间:2011-03-14 05:52:02

标签: javascript jquery html

我有一个表单,其中有很多问题,其答案通过复选框给出,现在我必须验证在包含复选框答案的所有问题中,必须至少检查一个复选框,然后出现警报消息,我想要用一个函数来做它也想知道如何调用我的html部分中的函数。所以发送你的答案。

2 个答案:

答案 0 :(得分:1)

HTML

<input type="checkbox" name="question[apples]" value="1" id="apples" />
<label for="apples">Do you like apples?</label> 

<input type="checkbox" name="question[shoes]" value="1" id="shoes" />
<label for="shoes">Do you like shoes?</label> 

的jQuery

if ($('#my-form :checkbox:checked').length == 0) {
    alert("You must answer at least one question');
}

jsFiddle

PHP(示例服务器端代码)

if (empty($_POST['question'])) {
  // Go back and pick at least one!
}

答案 1 :(得分:0)

您可以通过以下方式对答案选项进行编码,其中输入元素的名称相同,以表示一组答案。

<label><input type="checkbox" name="Question1" value="Ans1"/>Answer 1</label>
<label><input type="checkbox" name="Question1" value="Ans2"/>Answer 2</label>
<label><input type="checkbox" name="Question1" value="Ans3"/>Answer 3</label>

<label><input type="checkbox" name="Question2" value="Ans1"/>Answer 1</label>
<label><input type="checkbox" name="Question2" value="Ans2"/>Answer 2</label>
<label><input type="checkbox" name="Question2" value="Ans3"/>Answer 3</label>

使用onSubmit事件调用Javascript进行验证,并使用validateAns(下面提供)将问题名称(本例中的问题1或问题2)作为参数传递。

function validateAns (questionName) {
  var ansInput = document.getElementsByName(questionName);
  var answered = false;
  for (var i = 0; i < ansInputs.length; i++) {
    if (ansInput[i].checked) {
      answered = true;
      break;
    }
  }
  if (!answered) {
    alert('Answer question ' + questionName);
    return false;
  }
  return true;
}

这应该可以解决问题。