AntonLV 7 лет назад
Родитель
Сommit
ae9d98e57d

+ 5 - 1
modules/boonex/developer/classes/BxDevFunctions.php

@@ -50,7 +50,11 @@ class BxDevFunctions
                     $aInputs[$sName]['checker']['func'] = str_ireplace($sTrlCheckFuncPostfix, '', $aInput['checker']['func']);
             }
 
-		$aFields = array(
+        unset($aInputs['required']['attrs']['onchange']);
+        unset($aInputs['checker_func']['attrs']['disabled'], $aInputs['checker_func']['tr_attrs']['style']);
+        unset($aInputs['checker_error']['attrs']['disabled'], $aInputs['checker_error']['tr_attrs']['style']);
+
+        $aFields = array(
             'editable' => array(
                 'type' => 'switcher',
                 'name' => 'editable',

+ 16 - 9
studio/js/forms_fields.js

@@ -109,10 +109,12 @@ BxDolStudioFormsFields.prototype.onChangeType = function(iDiId) {
 	glGrids[this.sObjNameGrid].action('edit', {}, 'type=' + sType + '&di_id=' + iDiId, false, false);
 };
 
-BxDolStudioFormsFields.prototype.onSelectChecker = function(oSelect) {
+BxDolStudioFormsFields.prototype.onSelectChecker = function(oSelect, bClear) {
     var sChecker = $(oSelect).val();
+    var oInputs = $('#bx-form-element-checker_params_length_min, #bx-form-element-checker_params_length_max, #bx-form-element-checker_params_preg, #bx-form-element-checker_params_required').hide().find('input').attr('disabled', 'disabled');
+    if(bClear || bClear == 'undefined')
+        oInputs.val('');
 
-    $('#bx-form-element-checker_params_length_min, #bx-form-element-checker_params_length_max, #bx-form-element-checker_params_preg, #bx-form-element-checker_params_required').hide().find('input').val('').attr('disabled', 'disabled');
     switch(sChecker) {
         case 'length':
             $('#bx-form-element-checker_params_length_min, #bx-form-element-checker_params_length_max').show().find('input').removeAttr('disabled');
@@ -129,13 +131,18 @@ BxDolStudioFormsFields.prototype.onSelectChecker = function(oSelect) {
 };
 
 BxDolStudioFormsFields.prototype.onCheckRequired = function(oCheckbox) {
-	var sId = 'bx-form-element-checker_func';
-	if($(oCheckbox).attr('checked') != undefined)
-		$('#' + sId + ',#bx-form-element-checker_error').show();
-	else {
-		$('#' + sId).hide().find('select').val('');
-		$('#bx-form-element-checker_params_length_min, #bx-form-element-checker_params_length_max, #bx-form-element-checker_params_preg, #bx-form-element-checker_error, #bx-form-element-checker_params_required').hide().find('input').val('');
-	}
+    var sId = 'bx-form-element-checker_func';
+    if($(oCheckbox).attr('checked') != undefined) {
+        $('#' + sId + ',#bx-form-element-checker_error').show();
+
+        var oSelect = $('#' + sId + ' select');
+        if(oSelect.val() != '')
+            this.onSelectChecker(oSelect, false);
+    }
+    else {
+        $('#' + sId).hide().find('select').val('');
+        $('#bx-form-element-checker_params_length_min, #bx-form-element-checker_params_length_max, #bx-form-element-checker_params_preg, #bx-form-element-checker_error, #bx-form-element-checker_params_required').hide().find('input').val('');
+    }
 };
 
 BxDolStudioFormsFields.prototype.onChangeVisibleFor = function(oSelect) {

+ 13 - 4
studio/template/scripts/BxBaseStudioFormsField.php

@@ -285,19 +285,28 @@ class BxBaseStudioFormsField extends BxDolStudioFormsField
 
                     case 'checker_func':
                         $sCfValue = strtolower($this->aField[$sKey]);
-
                         $aForm['inputs'][$sKey]['value'] = $sCfValue;
+
+                        $bHidden = isset($aForm['inputs'][$sKey]['attrs']['disabled']) && !empty($sCfValue);
+                        if($bHidden) {
+                            unset($aForm['inputs'][$sKey]['attrs']['disabled']);
+                            unset($aForm['inputs']['checker_error']['attrs']['disabled']);
+                        }
+                        
                         switch($sCfValue) {
                             case 'length':
-                                unset($aForm['inputs']['checker_params_length_min']['tr_attrs']['style'], $aForm['inputs']['checker_params_length_max']['tr_attrs']['style']);
+                                if(!$bHidden)
+                                    unset($aForm['inputs']['checker_params_length_min']['tr_attrs']['style'], $aForm['inputs']['checker_params_length_max']['tr_attrs']['style']);
                                 unset($aForm['inputs']['checker_params_length_min']['attrs']['disabled'], $aForm['inputs']['checker_params_length_max']['attrs']['disabled']);
                                 break;
                             case 'date_range':
-                                unset($aForm['inputs']['checker_params_length_min']['tr_attrs']['style'], $aForm['inputs']['checker_params_length_max']['tr_attrs']['style'], $aForm['inputs']['checker_params_required']['tr_attrs']['style']);
+                                if(!$bHidden)
+                                    unset($aForm['inputs']['checker_params_length_min']['tr_attrs']['style'], $aForm['inputs']['checker_params_length_max']['tr_attrs']['style'], $aForm['inputs']['checker_params_required']['tr_attrs']['style']);
                                 unset($aForm['inputs']['checker_params_length_min']['attrs']['disabled'], $aForm['inputs']['checker_params_length_max']['attrs']['disabled'], $aForm['inputs']['checker_params_required']['attrs']['disabled']);
                                 break;
                             case 'preg':
-                                unset($aForm['inputs']['checker_params_preg']['tr_attrs']['style']);
+                                if(!$bHidden)
+                                    unset($aForm['inputs']['checker_params_preg']['tr_attrs']['style']);
                                 unset($aForm['inputs']['checker_params_preg']['attrs']['disabled']);
                                 break;
                         }