Распространенным способом для массивизации группы флажков ( или радио входы) является использование name=*[]
.
Назначение правила для селектора "Notes8[]"
prop и использовать minlength: 1
свойство:
jQuery(function($) { // DOM ready and $ alias in scope
$("#myForm").validate({
rules: {
"Notes8[]": {
required: true,
minlength: 1
}
},
messages: {
"Notes8[]": "Select at least one"
}
});
});
<form id="myForm">
<label>
<input class="mandatory Notes8_group" name="Notes8[]" type="checkbox" value="n8_1_yes"> Option 1
</label>
<label>
<input class="mandatory Notes8_group" name="Notes8[]" type="checkbox" value="n8_2_yes"> Option 2
</label>
<label>
<input class="mandatory Notes8_group" name="Notes8[]" type="checkbox" value="n8_3_yes"> Option 3
</label>
<button type="submit">SEND</button>
</form>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/jquery-validation@1.19.1/dist/jquery.validate.min.js"></script>
Престижность: { ссылка }
Пользовательский валидатор для нескольких флажков
Если вы хотите для создания вашего собственного валидатора это должно дать вам go:
jQuery(function($) { // DOM ready and $ alias in scope
function validateMultiple (selector, n, isExactlyN) {
const totChecked = $(selector).filter(':checked').length;
return !(isExactlyN ? totChecked == n : totChecked >= n);
}
$('#myForm').on('submit', function(ev) {
if (validateMultiple('.Notes8_group', 1)) {
ev.preventDefault();
alert("Select at least one"); // Your custom error here
}
});
});
<form id="myForm">
<label>
<input class="mandatory Notes8_group" name="Notes8~1" type="checkbox" value="n8_1_yes"> Option 1
</label>
<label>
<input class="mandatory Notes8_group" name="Notes8~2" type="checkbox" value="n8_2_yes"> Option 2
</label>
<label>
<input class="mandatory Notes8_group" name="Notes8~3" type="checkbox" value="n8_3_yes"> Option 3
</label>
<button type="submit">SEND</button>
</form>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/jquery-validation@1.19.1/dist/jquery.validate.min.js"></script>
Вы можете использовать такую функцию, как:
Пример 1: Хотя бы один :
validateMultiple('.Notes8_group', 1)
Пример 2: Ровно два :
validateMultiple('.Notes8_group', 2, true)
Дополнительный совет: Если вы не можете (по какой-то причине) назначить групповые классы , вы могли бы использовать селектор атрибута []
:
validateMultiple('[name^="Notes8~"]', 1)
, который будет нацеливаться на name
, который начинается с "Notes8~"
, поэтому все name = Notes8~1
, Notes8~2
и Notes8~3
элементов.