使用Jquery验证验证组中的组

使用Jquery验证验证组中的组,jquery,validation,Jquery,Validation,我知道这段代码很糟糕,但除了一个部分外,它是有效的: 我已经有了两个复选框,当您选择“是”成为必填项时,每个组中都会出现这两个复选框,如果您选中3个复选框中的任何一个(新闻稿、新闻稿2或新闻稿3),如图1所示: 但是,当一个人首先在“更多?”下拉菜单中选择“是”时,我希望下面的3个选项(新闻稿、新闻稿2和新闻稿3)成为必需选项(您必须至少选择一个选项/minlength:1),如图2所示: 一切都正常,但我被困在这一部分。简而言之,我希望您第一次看到的3个选项(在单击它们之前)在验证之前,您

我知道这段代码很糟糕,但除了一个部分外,它是有效的:

我已经有了两个复选框,当您选择“是”成为必填项时,每个组中都会出现这两个复选框,如果您选中3个复选框中的任何一个(新闻稿、新闻稿2或新闻稿3),如图1所示:

但是,当一个人首先在“更多?”下拉菜单中选择“是”时,我希望下面的3个选项(新闻稿、新闻稿2和新闻稿3)成为必需选项(您必须至少选择一个选项/minlength:1),如图2所示:

一切都正常,但我被困在这一部分。简而言之,我希望您第一次看到的3个选项(在单击它们之前)在验证之前,您至少需要单击其中一个选项

以下是迄今为止有效的代码:

<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.js" type="text/javascript"></script>
<script src="js/jquery.validate.js" type="text/javascript"></script>

<script type="text/javascript">
$.validator.setDefaults({
});

$().ready(function() {

    $("#commentForm").validate({

        rules: {

            'entry.7.group': {
                required: "#newsletter:checked",
                minlength: 1
                                            },
            'entry.77.group': {
                required: "#newsletter2:checked",
                minlength: 1
                            },
            'entry.777.group': {
                required: "#newsletter3:checked",
                minlength: 1
                            }
        }
    }); 
    });
</script>

<script language="JavaScript">
  function showhidefield1()
  {
    if (document.mainform.more.value == 'yes')
    {
      document.getElementById("hideablearea1").style.display = "block";
      document.getElementById("newsletter.group").find("input").val("").addClass("required");

    }
    else
    {
      document.getElementById("hideablearea1").style.display = "none";
      document.getElementById("newsletter.group").find("input").val("").removeClass("required");

    }
  }
</script>


<script language="JavaScript">
  function showhidefield2()
  {
    if (document.mainform.newsletter.checked)
    {
      document.getElementById("hideablearea2").style.display = "block";
      document.getElementById("group_7_1").find("input").val("").addClass("required");
      document.getElementById("group_7_2").find("input").val("").addClass("required");
    }
    else
    {
      document.getElementById("hideablearea2").style.display = "none";
      document.getElementById("group_7_1").find("input").val("").removeClass("required");
      document.getElementById("group_7_2").find("input").val("").removeClass("required");
    }
  }
</script>

<script language="JavaScript">
  function showhidefield3()
  {
    if (document.mainform.newsletter2.checked)
    {
      document.getElementById("hideablearea3").style.display = "block";
      document.getElementById("group_77_1").find("input").val("").addClass("required");
      document.getElementById("group_77_2").find("input").val("").addClass("required");
    }
    else
    {
      document.getElementById("hideablearea3").style.display = "none";
      document.getElementById("group_77_1").find("input").val("").removeClass("required");
      document.getElementById("group_77_2").find("input").val("").removeClass("required");
    }
  }
</script>

<script language="JavaScript">
  function showhidefield4()
  {
    if (document.mainform.newsletter3.checked)
    {
      document.getElementById("hideablearea4").style.display = "block";
      document.getElementById("group_777_1").find("input").val("").addClass("required");
      document.getElementById("group_777_2").find("input").val("").addClass("required");
    }
    else
    {
      document.getElementById("hideablearea4").style.display = "none";
      document.getElementById("group_777_1").find("input").val("").removeClass("required");
      document.getElementById("group_777_2").find("input").val("").removeClass("required");
    }
  }
</script>


<style type="text/css">
label.error {
color: #ff0600; list-style-position: outside;
clear: left;
display: inline;
float:right;
height:10px;}
}
</style>

</head>

$.validator.setDefaults({
});
$().ready(函数()){
$(“#commentForm”).validate({
规则:{
“条目7.组”:{
必填项:“#通讯:已选中”,
最小长度:1
},
“条目77.组”:{
必填项:“#通讯2:已选中”,
最小长度:1
},
“entry.777.group”:{
必填项:“#通讯3:已选中”,
最小长度:1
}
}
}); 
});
函数showhidefield1()
{
如果(document.mainform.more.value=='yes')
{
document.getElementById(“hideablearea1”).style.display=“block”;
document.getElementById(“newsletter.group”).find(“input”).val(“”.addClass(“必需”);
}
其他的
{
document.getElementById(“hideablearea1”).style.display=“无”;
document.getElementById(“newsletter.group”).find(“input”).val(“”)。removeClass(“必需”);
}
}
函数showHideFeld2()
{
如果(document.mainform.newsletter.checked)
{
document.getElementById(“hideablearea2”).style.display=“block”;
document.getElementById(“group_7_1”).find(“input”).val(“必需”).addClass(“必需”);
document.getElementById(“group_7_2”).find(“input”).val(“必需”).addClass(“必需”);
}
其他的
{
document.getElementById(“hideablearea2”).style.display=“无”;
document.getElementById(“group_7_1”).find(“input”).val(“必需”).removeClass(“必需”);
document.getElementById(“group_7_2”).find(“input”).val(“必需”).removeClass(“必需”);
}
}
函数showhidefield3()
{
if(document.mainform.newslettes2.选中)
{
document.getElementById(“hideablearea3”).style.display=“block”;
document.getElementById(“group_77_1”).find(“input”).val(“必需”).addClass(“必需”);
document.getElementById(“group_77_2”).find(“input”).val(“必需”).addClass(“必需”);
}
其他的
{
document.getElementById(“hideablearea3”).style.display=“无”;
document.getElementById(“group_77_1”).find(“input”).val(“必需”).removeClass(“必需”);
document.getElementById(“group_77_2”).find(“input”).val(“必需”).removeClass(“必需”);
}
}
函数showhidefield4()
{
if(document.mainform.newslettes3.选中)
{
document.getElementById(“hideablearea4”).style.display=“block”;
document.getElementById(“group_777_1”).find(“input”).val(“必需”).addClass(“必需”);
document.getElementById(“group_777_2”).find(“input”).val(“必需”).addClass(“必需”);
}
其他的
{
document.getElementById(“hideablearea4”).style.display=“无”;
document.getElementById(“group_777_1”).find(“input”).val(“必需”).removeClass(“必需”);
document.getElementById(“group_777_2”).find(“input”).val(“必需”).removeClass(“必需”);
}
}
标签错误{
颜色:#ff0600;列表样式位置:外部;
清除:左;
显示:内联;
浮动:对;
高度:10px;}
}
然后身体里有这样的东西:

      <select name="newsletter4" class="required" id="more" onchange="showhidefield1()">
      <option value="">More?</option><option value="yes">Yes</option><option value="no">No</option></select>
  <div id='hideablearea1' style='display:none'>
<br><br>

            <input type="checkbox" class="checkbox" id="newsletter" name="newsletter.group" onclick="showhidefield2()"/>Newsletter
            <div id='hideablearea2' style='display:none'>
            <input type="checkbox" id="group_7_1" value="Choice 1" name="entry.7.group" />Choice 1
            <input type="checkbox" id="group_7_2" value="Choice 2" name="entry.7.group" />Choice 2

             <br><br></div>
<br><br>

             <input type="checkbox" class="checkbox" id="newsletter2" name="newsletter.group" onclick="showhidefield3()"/>Newsletter2
             <div id='hideablearea3' style='display:none'>

            <input type="checkbox" id="group_77_1" value="Choice 1" name="entry.77.group" />Choice 1  
            <input type="checkbox" id="group_77_2" value="Choice 2" name="entry.77.group" />Choice 2
           </div>
<br><br>           
            <input type="checkbox" class="checkbox" id="newsletter3" name="newsletter.group" onclick="showhidefield4()"/>Newsletter3
            <div id='hideablearea4' style='display:none'>

            <input type="checkbox" id="group_777_1" value="Choice 1" name="entry.777.group" />Choice 1
            <input type="checkbox" id="group_777_2" value="Choice 2" name="entry.777.group" />Choice 2   

      </div>
      </div>

            <p></p>
    <input type="hidden" name="pageNumber" value="0"> 
    <input type="hidden" name="backupCache" value=""> 


  <div class="ss-item ss-navigate"><div class="ss-form-entry"> 
  <p>
    <input name="pageNumber" type="hidden" value="0" />
    <input name="backupCache" type="hidden" />
    <input name="submit" type="submit" value="Submit Form"/> 

更多?是的


新闻稿 选择1 选择2



通讯2 选择1 选择2

通讯3 选择1 选择2


听起来您需要自定义自己的“必需”规则。查看此链接:


它会引导您走上正确的道路。

谢谢。我之前已经看过了,但我不确定如何应用它来更改上面的代码并使其工作。我想这一定与代码“required:”有所不同:#more:checked“,其中应该知道yes的意思是“checked”,而不是“checked”。我还认为我需要让我的团队以一种所有人都能验证的方式组织起来。我不知道如何做到这一点,希望这里有人知道我如何修改代码使其正常工作。有人知道我能做些什么来解决这个问题吗?如果它太复杂,或者如果我的代码太破旧而无法理解,请让我知道。