我第一次使用带有 HTML 表单的 jQuery Validation 插件。我习惯于为此使用普通的旧 javascript,但我非常喜欢这个插件!无论如何,我坚持尝试进行一些条件验证。
场景:我有一个表格中的两部分问题。第一部分是是/否下拉菜单(必需)。第二部分是一组复选框,如果您在上一个下拉菜单中选择“是”,则必须至少选中其中一个。
<div>
<p><span class="bold large-font">8.</span> Some question to answer Yes or No to...</p>
<div class="margin-left-fifty">
<select id="Q8" class="Q8" name="Q8">
<option value="" selected></option>
<option value="Yes">Yes</option>
<option value="No">No</option>
</select>
</div>
<div class="margin-left-fifty">
<p><span class="underline italic">If Yes,</span> indicate which areas...</p>
</div>
<div class="margin-left-eighty">
<input id="Q8yesA" class="Q8yes" name="Q8yesA" type="checkbox" value="Yes" />
<label for="Q8yesA"><span class="small-font">a.</span> Option A</label>
<br />
<input id="Q8yesB" class="Q8yes" name="Q8yesB" type="checkbox" value="Yes" />
<label for="Q8yesB"><span class="small-font">b.</span> Option B</label>
<br />
<input id="Q8yesC" class="Q8yes" name="Q8yesC" type="checkbox" value="Yes" />
<label for="Q8yesC"><span class="small-font">c.</span> Option C</label>
<br />
<input id="Q8yesD" class="Q8yes" name="Q8yesD" type="checkbox" value="Yes" />
<label for="Q8yesD"><span class="small-font">d.</span> Other</label>
<input name="Q8yesDlist" type="text" maxlength="255" size="50" value="" placeholder="Please list..." />
</div>
请注意,这是一个相当大的调查的一部分,因此为了更容易和更快地进行整理,我将每个回复都设为了个人,而不是使用数组。
我相信我用来验证复选框的代码来自这里: validation for at least one checkbox
所以现在,我的函数看起来像这样:
$(function(){
$.validator.addMethod('Q8yes', function (value) {
return $('.Q8yes:checked').size() > 0; }, 'Please check at least one box for Question 8.');
var checkboxes8 = $('.Q8yes');
var checkbox_names8 = $.map(checkboxes8, function(e,i) { return $(e).attr("name")}).join(" ");
$('#survey').validate({
groups: {
checks8: checkbox_names8
},
rules: {
Q8: "required",
},
messages: {
Q8: "Please answer Question 8.",
},
errorContainer: $('#errorContainer'),
errorLabelContainer: $('#errorContainer ul'),
wrapper: 'li'
});
});
我一直在尝试将 addMethod 包装在 If 语句中,但无法弄清楚。我什至不确定这是否是正确的想法。
非常感谢您的帮助!谢谢!