请阅读下面的编辑2
我正在动态生成一个测验表格。问题和答案取自 MySQL 数据库。表单上的控件类型是复选框、单选按钮和文本框。
我的验证需要: 1)检查是否为所有相关问题选择了单选按钮(默认情况下未选择任何问题)。2) 检查是否为所有相关问题选择了至少一个复选框。3) 检查是否在文本框中输入了任何内容。
我找到了几个有关如何执行此操作的示例,但是由于我是动态生成表单,因此遇到了问题。
我用于生成表单的算法是:
Loop to get Questions from Database
{
Store "Type" of Question in variable X (Type = Single Choice 'c' (Radio button), Multi Choice 'm' (Checkbox), User Entry 'u' (Textbox)
Loop to get Answers for current Question
{
Switch(X)
{
case 'c'
Load each answer into separate radio buttons, Name = Question number.
break
case 'm'
Load each answer into separate checkboxes, Name = Question number.
break
case 'u'
Place textbox, Name = Question number.
break
}
}
}
然后将数据提交并存储在 MySQL 中。
我试图将所有表单元素从 POST 加载到一个数组中,并检查它们是否有一个值,但是我后来意识到这将检查每个单独的元素是否有一个值,这不是我想要的。
最好的方法是什么?非常感谢任何正确方向的指针!
编辑2:
我设法使用 jQuery.validate 为单选按钮和文本框解决了这个问题。我以这个页面的源代码为例。但是,它不适用于复选框!(我什至将他们用于复选框的源代码直接复制到我的页面中,它仍然不起作用。只有第一个复选框被突出显示,单击其他复选框不会删除验证。
这是我从他的网站复制的代码段。
<fieldset>
<legend>Spam</legend>
<label for="spam_email">
<input type="checkbox" class="checkbox" id="spam_email" value="email" name="spam[]" required minlength="2">
Spam via E-Mail
</label>
<label for="spam_phone">
<input type="checkbox" class="checkbox" id="spam_phone" value="phone" name="spam[]">
Spam via Phone
</label>
<label for="spam_mail">
<input type="checkbox" class="checkbox" id="spam_mail" value="mail" name="spam[]">
Spam via Mail
</label>
<label for="spam[]" class="error">Please select at least two types of spam.</label>
</fieldset>
我在这里错过了什么吗?还有什么我应该复制的吗?(我的页面中也包含两个包含的文件)