我在大表單上使用jQuery Validate插件,並且已經使用require_from_group方法(after posting previously)確保至少有一個來自一組檢查三個複選框。確保至少有一個從三個複選框使用jQuery驗證
但是,我已經ran into an issue與這阻止其他規則工作。我已經申請了一個suggested patch,但這似乎並沒有正常工作(如上面提到的GitHub問題)。
所以我需要找到另一種方法來驗證這組三個複選框字段(請注意,我需要專門針對這組三個checkboes,因爲我在表單上有其他不需要驗證的複選框字段),但我不確定現在從哪裏開始。我想我需要添加一些自定義規則到我的jQuery驗證代碼中,但是我不確定現在從哪裏開始,所以要感謝一些建議,謝謝。
這裏是我的出發HTML(剝離到最基本這個問題):
<form class="my_form" method="post" action="/" >
<div><ul class="form_errors"></ul></div>
<label><input class="my_checkbox_group" id="my_checkbox_1" name="my_checkbox_1[]" type="checkbox" value="Yes"> My checkbox 1</label>
<label><input class="my_checkbox_group" id="my_checkbox_2" name="my_checkbox_2[]" type="checkbox" value="Yes"> My checkbox 2</label>
<label><input class="my_checkbox_group" id="my_checkbox_3" name="my_checkbox_3[]" type="checkbox" value="Yes"> My checkbox 3</label>
<input type="submit" value="Submit" />
</form>
這裏是我的出發JS(這使得所有三個強制性的複選框,但我只是想從三個至少一個是選中):
$(".my_form").validate({
errorLabelContainer: ".form_errors",
wrapper: "li",
rules: {
'my_checkbox_1[]': { required: true },
'my_checkbox_2[]': { required: true },
'my_checkbox_3[]': { required: true }
},
messages: {
'my_checkbox_1[]': "This field is required",
'my_checkbox_2[]': "This field is required",
'my_checkbox_3[]': "This field is required"
}
});
編輯1:對不起,我應該補充說,每個複選框的名稱屬性不能是相同的。這些名稱映射到CMS中的特定自定義字段名稱,因此如果它們完全相同,則在提交表單時,字段中的值將不會正確保存。這也是爲什麼我從未遵循jQuery Validate demo page上的第二個例子的原因。
非常感謝你,Sparky! :)我剛剛得到這個與我的實際形式工作,它的工作很好。我也用它爲另一組複選框添加了一個新的自定義方法,所以這是一個很好且可重複/靈活的解決方案。 – Stephen 2013-03-06 09:50:38
@Stephen你可以通過返回$('。my_checkbox_group:checked')來修剪這個。length> 0 – 2013-03-06 09:54:30
@politus - 謝謝,我來看看這個。 – Stephen 2013-03-06 13:35:13