← All changes
|
includes/Admin/Form/ExtraFieldJS/CheckDisableOnMax.php
+12
-8
2.10.2
→
2.15.3
View file →
| @@ -6,9 +6,9 @@ | ||
| 6 | 6 | { |
| 7 | 7 | public static function init($fk, $field, $contentId) |
| 8 | 8 | { |
| 9 | 9 | return <<<FUNCTIONDEF |
| 10 | - function initCheckDisableOnMax(formContentId = null) { | |
| 10 | + function initCheckDisableOnMax(formContentId = null, parentSelector = '') { | |
| 11 | 11 | const contentIds = formContentId ? [formContentId] : Object.keys(bf_globals); |
| 12 | 12 | contentIds.forEach(contentId => { |
| 13 | 13 | const frm = bfSelect("#form-"+contentId); |
| 14 | 14 | const {fields} = bf_globals[contentId]; |
| @@ -13,21 +13,25 @@ | ||
| 13 | 13 | const frm = bfSelect("#form-"+contentId); |
| 14 | 14 | const {fields} = bf_globals[contentId]; |
| 15 | 15 | const checkFlds = Object.keys(fields).filter(fld => ['check', 'image-select'].includes(fields[fld].typ)); |
| 16 | 16 | checkFlds.forEach(fk => { |
| 17 | - frm.querySelectorAll("."+fk+"-inp-wrp input[type='checkbox']").forEach(function(el){ | |
| 17 | + if(typeof checkRepeatedField !== 'undefined' && checkRepeatedField(fk, bf_globals[contentId]) && !parentSelector){ | |
| 18 | + return; | |
| 19 | + } | |
| 20 | + const classSelector = parentSelector + "."+fk+"-inp-wrp input[type='checkbox']"; | |
| 21 | + frm.querySelectorAll(classSelector).forEach(function(el){ | |
| 18 | 22 | el.addEventListener("change",function(e){ |
| 19 | 23 | const max = Number(fields[fk].mx); |
| 20 | - const checked = frm.querySelectorAll("."+fk+"-inp-wrp input[type='checkbox']:checked").length; | |
| 24 | + const checked = frm.querySelectorAll(classSelector + ":checked").length; | |
| 21 | 25 | if(checked >= max){ |
| 22 | - frm.querySelectorAll("."+fk+"-inp-wrp input[type='checkbox']").forEach(function(el){ | |
| 23 | - if(!el.checked){ | |
| 24 | - el.setAttribute("disabled",true); | |
| 25 | - } | |
| 26 | + frm.querySelectorAll(classSelector).forEach(function(el){ | |
| 27 | + if(!el.checked){ | |
| 28 | + el.setAttribute("disabled",true); | |
| 29 | + } | |
| 26 | 30 | }); |
| 27 | 31 | }else{ |
| 28 | 32 | const options = fields[fk].opt; |
| 29 | - frm.querySelectorAll("."+fk+"-inp-wrp input[type='checkbox']").forEach(function(el, index){ | |
| 33 | + frm.querySelectorAll(classSelector).forEach(function(el, index){ | |
| 30 | 34 | if(!options[index]?.disabled){ |
| 31 | 35 | el.removeAttribute("disabled"); |
| 32 | 36 | } |
| 33 | 37 | }); |