jQuery Validation Plugin多个复选框

时间:2010-10-01 02:17:33

标签: javascript jquery jquery-plugins

我在使用jQuery Validator插件时遇到了一些困难。我有一个带有不同 name属性的复选框列表,我似乎无法弄清楚如何确保其中至少有一个已经被检查过。我在Google上找到的所有内容似乎仅在name属性相同时才有效。

以下是一些示例代码(已更新)

<ul id="email_lists">
    <li>
        <input name="checkbox1" type="checkbox" /> List 1
    </li>
    <li>
        <input name="checkbox2" type="checkbox" /> List 2
    </li>
    <li>
        <input name="checkbox3" type="checkbox" /> List 3
    </li>
    <li>
        <input name="checkbox4" type="checkbox" /> List 4
    </li>
</ul>

我想确保至少检查其中一个。不幸的是,我不能使名称与提交给第三方电子邮件营销应用程序的表单相同,并且期望这些复选框具有特定的name属性。

更新

我知道如何使用普通的jQuery来做这件事,但我更喜欢使用jQuery Validator插件,因为这就是页面上所有其他验证的完成方式。

我可以通过说$('#email_lists li');来使用jQuery对这些复选框进行分组,但我不确定如何使用类似的东西并告诉jQuery Validator插件将其用作组。

2 个答案:

答案 0 :(得分:1)

假设你可以给复选框一个类名(jQuery需要某些东西来处理):

<input class="validationGroupOne" name="checkbox1" type="checkbox" />
<input class="validationGroupOne" name="checkbox2" type="checkbox" />
<input class="validationGroupOne" name="checkbox3" type="checkbox" />
<input class="validationGroupOne" name="checkbox4" type="checkbox" />

您应该可以插入.validationGroupOne类选择器来代替通常的name属性。

答案 1 :(得分:0)

这是我的解决方案: - )

使用:

<div id="list">
<input name="chkbox" type="checkbox" />
<input name="chkbox" type="checkbox" />
<input name="chkbox" type="checkbox" />
<input name="chkbox" type="checkbox" />
</div>

<input type="hidden" name="the_real_field_name" />

然后在jquery中验证插件块:

rules : {
       chkbox: "required"
        },

然后将值作为数组存储到单个隐藏字段中,如:

function updateInput() {
    var allVals = [];
    $('#list :checked').each(function() {
        allVals.push($(this).val());
    });
    $('#the_real_field_name').val(allVals);
}
$(function() {
    $('#list input').click(updateInput);
    updateInput();
});