4

我正在使用 jQuery Validate 来验证我的表单。问题是我有一个带有多个选择框(动态编号)的表单,它有一个动态名称->answers[$question['id']]

我见过一些脚本,当有一个固定名称时,您可以使用它来处理所有输入字段,就像这样。

$('#form').validate({
    rules: {
        "answers[]" = "required"
    }
});

但在我的例子中,这是不可能的,有什么想法吗?谢谢!

4

2 回答 2

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" />

或使用 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

演示#1:http: //jsfiddle.net/7JHWf/


2)或使用该方法动态地将规则分配给所有以开头的rules()字段:nameanswers

$('#form').validate(); // initialize the plugin

// assign the rules
$('input[name^="answers"]').each(function() {
    $(this).rules('add', {
        required: true
    });
});

演示#2:http: //jsfiddle.net/7JHWf/1/

于 2013-09-25T17:10:03.233 回答
0

您可以通过抓取所有选择框或向它们添加特定类来选择您感兴趣的选择框,然后使用 each() 循环:

$('select') or $('select.specificClass').each(function() {}

您无需知道每个框的名称/ID 即可选择并循环遍历它。您可以使用以下方法在 each() 循环中引用当前项目值:

$(this).val()
于 2013-09-25T14:42:32.003 回答