Решение, которое я выбрал, заключалось в том, чтобы связать jquery.validate.js и jquery.metadata.js из http://bassistance.de/jquery-plugins/jquery-plugin-validation/
Затем у меня был контрольный список типов запросов в верхней части формы, которые отображают / скрывают элемент id при проверке элемента (функция показа / скрытия не показана).
<fieldset id="request-type">
<legend>Type of Request</legend>
<ul>
<li><input type="checkbox" name="q4838:q1[]" id="q4838_q1_0" value="0" class="sq-form-field" /><label for="q4838_q1_0">New account</label></li>
<li><input type="checkbox" name="q4838:q1[]" id="q4838_q1_1" value="1" class="sq-form-field" /><label for="q4838_q1_1">Delete account</label></li>
<li><input type="checkbox" name="q4838:q1[]" id="q4838_q1_2" value="2" class="sq-form-field" /><label for="q4838_q1_2">Change access/account transfer</label></li>
<li><input type="checkbox" name="q4838:q1[]" id="q4838_q1_3" value="3" class="sq-form-field" /><label for="q4838_q1_3">Hardware</label></li>
<li><input type="checkbox" name="q4838:q1[]" id="q4838_q1_4" value="4" class="sq-form-field" /><label for="q4838_q1_4">Software</label></li>
<li><input type="checkbox" name="q4838:q1[]" id="q4838_q1_5" value="5" class="sq-form-field" /><label for="q4838_q1_5">Email</label></li>
<li><input type="checkbox" name="q4838:q1[]" id="q4838_q1_6" value="6" class="sq-form-field" /><label for="q4838_q1_6">Other</label></li>
</ul>
</fieldset>
В этом примере мы скажем, что была выбрана опция «Удалить аккаунт», которая «показала бы»
<fieldset id="delete-account" style="display: block;">
Поскольку оба поля ввода в наборе полей являются обязательными, когда установлен флажок удаления учетной записи, я добавил следующее в атрибут класса требуемого ввода.
class="{required:'#checkboxid:checked', messages:{required:'required error message'}}"
Набор полей «delete-account» выглядит следующим образом .....
<fieldset id="delete-account" style="display: block;">
<legend>Delete Account</legend>
<label for="q4832_q1">Cessation date</label>
<input type="text" name="q4832:q1value[d]" value="" class="{required:'#q4838_q1_1:checked', messages:{required:'Enter Cessation Date'}}" id="q4832:q1value[d]" />
<label for="q4832_q1">List of assets</label>
<input type="text" name="q4832:q2" value="" class="{required:'#q4838_q1_1:checked', messages:{required:'Enter Cessation Date'}}" id="q4832:q2" />
</fieldset>
«Обязательное» значение в классе обычно работает на true или false, т. Е. {required:'true', messages:{required:'This field is required'}}
, но в этом случае мы помещаем туда ссылку вместо стандартного true или false, #checkboxid:checked
. Если этот флажок установлен, он возвращается как 'true'
, и поле становится обязательным, а если оно возвращается 'false'
, поле не требуется.
Еще одна полезная вещь, которую я нашел, - это убедиться, что кто-то выбрал тип запроса в начале формы, добавив следующее к атрибуту класса на каждом из флажков
class="{required:'true', minlength:1, messages:{required:'Please select a checkbox'}}"
Если вам нужно установить более одного флажка, просто добавьте к минимальной длине.