2010-05-19 15 views
14

Mam prosty formularz html, który dodałem do sprawdzania poprawności za pomocą wtyczki walidacji JQuery. Mam to działa dla pojedynczych pól, które wymagają wartości. Teraz muszę to rozszerzyć, aby użytkownik odpowiedział "tak" na pytanie, musi wpisać coś w polu Szczegóły, w przeciwnym razie pole Szczegóły może pozostać puste. Używam przycisków radiowych do wyświetlania Tak/Nie. Oto mój kompletny formularz html - Nie jestem pewien gdzie iść stąd:Walidacja warunkowa przy użyciu wtyczki walidacyjnej JQuery

<script type="text/javascript" charset="utf-8"> 
    $.metadata.setType("attr", "validate"); 
    $(document).ready(function() { 
    $("#editRecord").validate(); 
    }); 
    </script> 

    <style type="text/css"> 
    .block { display: block; } 
    form.cmxform label.error { display: none; } 
    </style> 

    </head> 
    <body> 

      <div id="header"> 
       <h1> 
        Questions</h1> 
      </div> 
      <div id="content"> 
       <h1> 
        Questions Page 1 
       </h1> 
      </div> 
    <div id="content"> 
       <h1> 
       </h1> 
       <form class="cmxform" method="post" action="editrecord.php"  id="editRecord"> 
       <input type="hidden" name="-action" value="edit"> 
        <h1> 
        Questions     
        </h1> 

      <table width="46%" class="record"> 
      <tr> 
      <td width="21%" valign="top" class="field_name_left"><p>Question 1</p></td> 
      <td width="15%" valign="top" class="field_data"> 
      <label for="Yes"> 
      <input type="radio" name="Question1" value="Yes" validate = "required:true" /> Yes 
      </label> 
      <label for="No"> 
    <input type="radio" name="Question1" value="No" /> No 
      </label> 
      <label for="Question1" class="error">You must answer this question to proceed</label> 
      </td> 
      <td width="64%" valign="top" class="field_data"><strong>Details:</strong> 
      <textarea id = "Details1" class="where" name="Details1" cols="25" rows="2"></textarea></td> 
      </tr> 
    <tr> 
      <td valign="top" class="field_name_left">Question 2</td> 
<td valign="top" class="field_data"> 
    <label for="Yes"> 
      <input type="radio" name="Question2" value="Yes" validate = "required:true" /> Yes 
      </label> 
      <label for="No"> 
    <input type="radio" name="Question2" value="No" /> No 
      </label> 
      <label for="Question2" class="error">You must answer this question to proceed</label> 
     </td> 
    <td valign="top" class="field_data"><strong>Details:</strong> 
       <textarea id = "Details2" class="where" name="Details2" cols="25" rows="2"></textarea>   </td> 
    </tr> 
      <tr class="submit_btn"> 
          <td colspan="3"> 
           <input type="submit" name="-edit" value="Finish"> 
           <input type="reset" name="reset" value="Reset">   </td> 
      </tr> 
      </table> 
     </form> 
    </div> 
    </body> 
    </html> 

Odpowiedz

19

Na swoich elementów <textarea>, dodać dependency expression dla required, na przykład na pytanie 1, to zrobić:

validate="required:'input[name=Question1][value=Yes]:checked'" 

Ten mówi, że jeśli $('input[name=Question1][value=Yes]:checked').length > 0 wówczas pole jest wymagane, więc jeśli tak jest zaznaczone, nie jest to wymagane :)

You can see a working demo here

+0

Dzięki za odpowiedź. Dodałem kod do elementów