我正在使用jQuery Validate来验证我的表单。问题是我有一个带有多个选择框(动态编号)的表单,它有一个动态名称 - > answers[$question['id']]
我看到一些脚本,当你有一个固定名称可以使用它来解决所有输入字段时。
$('#form').validate({
rules: {
"answers[]" = "required"
}
});
但在我的例子中,这是不可能的,任何想法?谢谢!
答案 0 :(得分:14)
首先,
不是"answers[]" = "required"
它是"answers[]": "required"
注意冒号代替你的等号。
$('#form').validate({
rules: {
"answers[]": "required"
}
});
其次,这只会将required
规则分配给name="answers[]"
的单个字段。
如果您想使用name="answers[1]"
,name="answers[2]"
,name="answers[3]"
等轻松将此规则分配到多个字段,那么您需要执行以下两项操作之一...
1)声明required
规则内联...
使用class
:
<input type="text" name="answers[1]" class="required" />
<input type="text" name="answers[2]" class="required" />
<input type="text" name="answers[3]" class="required" />
OR与HTML5:
<input type="text" name="answers[1]" required="required">
<input type="text" name="answers[2]" required="required">
<input type="text" name="answers[3]" required="required">
和jQuery:
$('#form').validate(); // initialize the plugin
DEMO#1 :http://jsfiddle.net/7JHWf/
2)或者使用rules()
方法动态地将规则分配给name
以answers
开头的所有字段:
$('#form').validate(); // initialize the plugin
// assign the rules
$('input[name^="answers"]').each(function() {
$(this).rules('add', {
required: true
});
});
DEMO#2 :http://jsfiddle.net/7JHWf/1/
答案 1 :(得分:0)
您可以通过抓取所有选择框或为其添加特定类来选择您感兴趣的选择框,然后使用每个()循环:
$('select') or $('select.specificClass').each(function() {}
您不需要知道每个框的名称/ ID,以便能够选择并循环它。您可以使用以下命令引用each()循环中的当前项值:
$(this).val()