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