2011-12-31 5 views
2

이 코드는 끔찍 알고 있지만, 한 부분을 제외하고 작동합니다유효성 JQuery와 유효성 검사 그룹 내에서 그룹

당신이되기 위해 "예"를 선택하면 이미 각 그룹에 나타나는이 확인란을 당신이 3 개 체크 박스의 체크하면 필요한 (뉴스 레터, newsletter2 또는 newsletter3) 여기에 그림 1과 같이 : "더"

Figure 1

을하지만 하나는에 "예"를 선택하면 드롭 다운 메뉴를 선택하면 그림 2와 같이 아래에 3 개의 선택 사항 (뉴스 레터, 뉴스 레터 2 & 뉴스 레터 3)이 필요하게됩니다 (적어도 하나의 선택/최소 길이 : 1을 선택해야합니다).

Figure 2

모든 것이 작동하지만 제출하지만이 부분에 머물러 있습니다. 요컨대, 유효성을 검사하기 전에 먼저 3 가지 중 하나를 클릭해야하는 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> 

그리고 몸이이 : 당신이 "필요"규칙의 자신의 맛을 사용자 정의해야 같은

 <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"/> 
+0

이 문제를 해결하기 위해 내가 무엇을 할 수 있는지 아는 사람이 있습니까? 너무 복잡하거나 코드가 너무 작아서 알아낼 수 없다면 알려주세요. –

답변

1

는 소리. 이것을 확인하십시오 :
http://docs.jquery.com/Plugins/Validation/Methods/required#dependency-expression

올바른 경로로 안내해야합니다.

+0

고맙습니다. 이전에 살펴 봤지만 위의 코드를 변경하고 작동 시키려면 어떻게 적용해야할지 모르겠습니다. 나는이 코드와 다른 뭔가가 있어야한다고 생각한다. "#more : checked" "대신에"checked "대신에"yes "는"checked "를 의미한다. 나는 또한 모든 사람들이 검증 할 수있는 방식으로 그룹을 구성해야한다고 생각합니다. 이 작업을 수행하는 방법을 모릅니다. 코드를 바꿀 수있는 방법을 알기를 바랍니다. –

관련 문제