jquery validate:动态生成的复选框(名称不同)

时间:2013-12-18 09:02:52

标签: jquery checkbox jquery-validate

我在typo3中使用旧版本的powermail扩展程序。 这个分机。创建以下标记:

<input type="checkbox" id="uid53_0" value="1" name="tx_powermail_pi1[uid53][0]">
<input type="checkbox" id="uid53_1" value="2" name="tx_powermail_pi1[uid53][1]">
<input type="checkbox" id="uid53_2" value="3" name="tx_powermail_pi1[uid53][2]">

所以这些名字并不完全相同。

我已尝试使用此代码段验证:

$('#formid').validate({
    rules: {
        'tx_powermail_pi1[uid53]': {
            required: true
        }
}

但是可以肯定的是,由于名称属性中的数字,它无法正常工作。

我认为tx_powermail_pi1[uid53][*]部分中的通配符rules:可能有所帮助,但事实并非如此。

我希望必须检查此组中至少1个复选框。

1 个答案:

答案 0 :(得分:0)

如果您只想在一个组中设置一个复选框(当该组的每个成员具有不同的name时),请使用require_from_group的{​​{1}}方法。

您还可以在jQuery .each()中使用the additional-methods.js file来保存多行代码。

tx_powermail_pi1[uid53]开头的所有元素定位。

$('input[name^="tx_powermail_pi1[uid53]"]').each(function () {
    $(this).rules('add', {
        require_from_group: [1, this],
        messages: {
            require_from_group: "please check one"
        }
    });
});

然后将所有三个重复的消息合并为一个,使用groups选项...

$('#formid').validate({
    // other rules & options
    groups: {
        checkbox: 'tx_powermail_pi1[uid53][0] tx_powermail_pi1[uid53][3] tx_powermail_pi1[uid53][4]'
    }
});

工作演示:the .rules() method