javascript - 带有 2 个部分的复选框场景的 jQuery 验证

标签 javascript jquery forms validation checkbox

我有一个关于令人困惑的 jQuery 验证与复选框问题的问题。

我有一个包含两个标题的表单:

问题:在“标题 1”下必须选择一个选项,在“标题 2”下必须选择一个选项。

<input type="checkbox" id="commjoin" name="commjoin"/>通过<input type="checkbox" id="commjoin11" name="commjoin11"/>位于“标题 1”下。

Heading 1
checkbox
checkbox
checkbox
checkbox
checkbox
checkbox

<input type="checkbox" id="commjoin12" name="commjoin12"/>通过<input type="checkbox" id="commjoin50" name="commjoin50"/>位于“标题 2”下。

Heading 2
checkbox
checkbox
checkbox
checkbox
checkbox
checkbox

单击“下一步”按钮时需要检查<input type="submit" name="button" onclick="return ckFormJ(5); " runat=server id="button" value="Next >>">

重申一下,必须在“标题 1”下选择一个选项,在“标题 2”下必须选择一个选项。

我可以看到如何查看是否选中了一个框,但验证每个标题下是否至少选中了一个框有点困难。我怎样才能让它发挥作用?

嗨, 我将每个组包裹在一个 div 标签中,这样我就可以检查每个组是否至少选中了一个框,但由于某种原因我无法让它工作。

下面的代码没有正确显示;如何发布 HTML?

化学/尿液分析 0.00 美元 教育 0.00 美元 通才 0.00 美元 血液学/止血 0.00 美元 阿拉巴马州协会 10.00 美元 阿拉斯加州协会 0.00 美元 亚利桑那州/内华达州协会 0.00 美元 阿肯色州协会 0.00 美元

JQUERY 显示正常: $("input[type=submit]").click(function () {

var length1 = $('#Scientific Assembly input[type=checkbox]:checked').length;
alert("length1=" + length1);

var length2 = $('#State Societies input[type=checkbox]:checked').length;
alert("length2=" + length2);

if (length1 == 0) {
    alert("Please select at least one Scientific Assembly checkbox");
    return false;
}

if (length2 == 0) {
    alert("Please select at least one State Societies checkbox");
    return false;
}
return true;

});

最佳答案

这个问题的措辞不太好。尽管如此,OP 询问您是否有一个分布在不同标题标签中的复选框组...如何确保每个标题至少选择一个框。

解决方案

  • 将复选框部分包裹在标签中
  • checkbox onchange 检查每个部分所选复选框的长度
  • 比较每个部分的选择长度 >= 1
  • 做一些有效的事情

实例

http://codepen.io/anon/pen/RagaML

<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="content-type" content="text/html; charset=utf-8">
        <title>test</title>
    </head>
    <body>
        <h1>heading 1</h1>
        <fieldset id="area1">
            <input type="checkbox" name="test"> Box1
            <input type="checkbox" name="test"> Box2
        </fieldset>

        <h1>heading 2</h1>
        <fieldset id="area2">
            <input type="checkbox" name="test"> Box3
            <input type="checkbox" name="test"> Box4
        </fieldset>
        <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.0.0-beta1/jquery.min.js"></script>
        <script>
            $("input[name=test]").change(function () {
                // check if child box is checked in first section
                var area1 = $("#area1").children("input[name=test]:checked");
                // check if child box is checked in second section
                var area2 = $("#area2").children("input[name=test]:checked");

                var isValid = (area1.length >= 1 && area2.length >= 1);

                if (isValid)
                    alert("valid");
            });
        </script>
    </body>
</html>

关于javascript - 带有 2 个部分的复选框场景的 jQuery 验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36225983/

相关文章:

javascript - 表单在我不想要时自动提交?

php - 最佳实践 : Use same form for creation and update

Javascript/Jquery 从带有换行符的文本区域字符串中获取前 100 个单词

php - 如何在鼠标悬停在另一个单选按钮或其标签 php/mysql 上时使用 jquery 悬停/隐藏单选按钮

javascript - react forwardRef : ref and other props

javascript - jquery 缓冲区/队列的效果?或者判断效果是否正在进行中?

javascript - 如何在另一个模态中创建模态,最后一个模态在 Jquery 中打开另一个时消失

forms - 在 Powershell 中检查是什么关闭了 Windows 窗体

javascript - TinyMCE/IE9/DIV 具有宽度/高度/内容可编辑/如何防止 DIV 选择?

javascript - JQuery on keydown 事件焦点到一个按钮似乎会自动按下按钮?