PluginProbe
Bit Form – Contact Form, Payment Forms, Multi Step Forms, Calculator & Custom Form Builder / 2.16.2
Bit Form – Contact Form, Payment Forms, Multi Step Forms, Calculator & Custom Form Builder v2.16.2
V-3.3.0 3.2.2 3.2.1 3.2.0 3.1.4 3.1.3 3.1.2 3.1.1 3.1.0 V3.0.3 V3.0.2 -3.0.1 V_3.0.0 1.1.1 1.1.8 1.2 1.3 1.4 1.4.18 1.5.2 1.9 2.0 2.10.0 2.10.1 2.10.2 All 137 releases
← All changes | includes/Admin/Form/ExtraFieldJS/CheckDisableOnMax.php +38 -28 2.02.16.2 View file →
@@ -1,36 +1,46 @@
1 1 <?php
2 2
3 3 namespace BitCode\BitForm\Admin\Form\ExtraFieldJS;
4 4
5 -class CheckDisableOnMax {
6 - public static function init($fk, $field, $contentId) {
7 - $script = '';
8 - $max = isset($field->mx) ? $field->mx : 0;
9 - if (isset($field->valid->disableOnMax) && $field->valid->disableOnMax) {
10 - $script .= <<<FUNCTIONDEF
11 - bfSelect("#{$contentId}").querySelectorAll(".{$fk}-inp-wrp input[type='checkbox']").forEach(function(el){
12 - el.addEventListener("change",function(e){
13 - var max = {$max};
14 - var checked = bfSelect("#{$contentId}").querySelectorAll(".{$fk}-inp-wrp input[type='checkbox']:checked").length;
15 - if(checked >= max){
16 - bfSelect("#{$contentId}").querySelectorAll(".{$fk}-inp-wrp input[type='checkbox']").forEach(function(el){
17 - if(!el.checked){
18 - el.setAttribute("disabled",true);
19 - }
20 - });
21 - }else{
22 - const options = bf_globals["{$contentId}"].fields["{$fk}"].opt;
23 - bfSelect("#{$contentId}").querySelectorAll(".{$fk}-inp-wrp input[type='checkbox']").forEach(function(el, index){
24 - if(!options[index].disabled){
25 - el.removeAttribute("disabled");
26 - }
27 - });
28 - }
5 +class CheckDisableOnMax
6 +{
7 + public static function init($fk, $field, $contentId)
8 + {
9 + return <<<FUNCTIONDEF
10 + function initCheckDisableOnMax(formContentId = null, parentSelector = '') {
11 + const contentIds = formContentId ? [formContentId] : Object.keys(bf_globals);
12 + contentIds.forEach(contentId => {
13 + const frm = bfSelect("#form-"+contentId);
14 + const {fields} = bf_globals[contentId];
15 + const checkFlds = Object.keys(fields).filter(fld => ['check', 'image-select'].includes(fields[fld].typ));
16 + checkFlds.forEach(fk => {
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){
22 + el.addEventListener("change",function(e){
23 + const max = Number(fields[fk].mx);
24 + const checked = frm.querySelectorAll(classSelector + ":checked").length;
25 + if(checked >= max){
26 + frm.querySelectorAll(classSelector).forEach(function(el){
27 + if(!el.checked){
28 + el.setAttribute("disabled",true);
29 + }
30 + });
31 + }else{
32 + const options = fields[fk].opt;
33 + frm.querySelectorAll(classSelector).forEach(function(el, index){
34 + if(!options[index]?.disabled){
35 + el.removeAttribute("disabled");
36 + }
37 + });
38 + }
39 + });
29 40 });
30 - });
31 -
41 + })
42 + })
43 + }
32 44 FUNCTIONDEF;
33 - }
34 - return $script;
35 45 }
36 46 }