提交前JQuery需要Checkbox和单选按钮

Bud*_*sey 11 forms validation jquery

我正在努力解决这个问题.现在正在查看JQuery验证的示例和工具超过3个小时.

我想要做的就是要求选中一个复选框和一个单选按钮,但我不在乎需要哪一个.

<form id="form1" action="/controller/action" method="post">
    <div class="checkbox"><input type="checkbox" name="box1" class="cBox" /><label for="box1" class="label">Box1</label></div>
    <div class="checkbox"><input type="checkbox" name="Box2" class="cBox" /><label for="Box2" class="label">Box2</label></div>
    <div class="checkbox"><input type="checkbox" name="Box3" class="cBox" /><label for="Box3" class="label">Box3</label></div>
    <div class="radio"><input type="radio" name="print" value="Radio1" class="rad" /><label class="label">Radio1</label></div>
    <div class="radio"><input type="radio" name="print" value="Radio2" class="rad" /><label class="label">Radio2</label></div>
    <div class="radio"><input type="radio" name="print" value="Radio3" class="rad" /><label class="label">Radio3</label></div>
    <input type="submit" value="Submit" />
</form>
Run Code Online (Sandbox Code Playgroud)

任何帮助将不胜感激.

Pao*_*ino 22

为此,您必须使用:checked选择器.虽然JP的答案很好,但我可能会这样做:

$('#form1').submit(function() {
    if ($('input:checkbox', this).is(':checked') &&
        $('input:radio', this).is(':checked')) {
        // everything's fine...
    } else {
        alert('Please select something!');
        return false;
    }
});
Run Code Online (Sandbox Code Playgroud)

几个笔记:

  • 我认为使用is函数更好,它返回选择器的布尔值.
  • 您可以使用:radio:checkbox作为选择表单中所有无线电和复选框的快捷方式.但是,根据jQuery手册,使用这些选择器而不input在它们之前指定是不好的做法,因为它们评估*:checkbox*:radio否则,它们是非常慢的选择器.
  • 通过传递this作为第二个参数,我们指定搜索的上下文,因此仅搜索当前表单内的复选框和无线电输入.没有它,如果页面中恰好有另一种形式,我们可能会得到误报.