48 lines
1.3 KiB
JavaScript
48 lines
1.3 KiB
JavaScript
/* eslint-disable func-names */
|
|
|
|
/* Max checked validator */
|
|
/* Proper response for max <= 21 */
|
|
let maxChecked;
|
|
function maxCheckedMsg() {
|
|
maxChecked = parseInt(maxChecked, 10);
|
|
if (maxChecked === 1) {
|
|
return `Proszę zaznaczyć maksymalnie ${maxChecked} pole.`;
|
|
} else if (maxChecked > 1 && maxChecked < 5) {
|
|
return `Proszę zaznaczyć maksymalnie ${maxChecked} pola.`;
|
|
}
|
|
return `Proszę zaznaczyć maksymalnie ${maxChecked} pól.`;
|
|
}
|
|
|
|
jQuery.validator.addMethod(
|
|
"max_checked",
|
|
function(value, element) {
|
|
let max = 0;
|
|
const el = jQuery(element);
|
|
const form = jQuery(element).closest("form");
|
|
let name;
|
|
let count = 0;
|
|
|
|
const attr = el.attr("data-js-validation-max-checked");
|
|
if (typeof attr !== typeof undefined && attr !== false) {
|
|
max = attr;
|
|
maxChecked = max;
|
|
name = el.attr("name");
|
|
|
|
count = jQuery(form).find(`input[name="${name}"]:checkbox:checked`)
|
|
.length;
|
|
if (count <= max) {
|
|
return this.optional(element) || true;
|
|
}
|
|
return this.optional(element) || false;
|
|
}
|
|
return this.optional(element) || true;
|
|
},
|
|
maxCheckedMsg
|
|
);
|
|
|
|
/* Max checked validation */
|
|
/* Need attr data-js-validation-max-checked */
|
|
jQuery.validator.addClassRules("js-validation-max-checked", {
|
|
max_checked: true,
|
|
});
|