Browse Source

动态显示组件在进行判断时, 增加对已被附加禁用(disabled)组件的处理
原代码在进行校验时, 使用serializeArray方法在序列化表单元素时, 会默认将disabled的组件过滤掉, 此操作将会导致动态显示组件依赖的组件被设置为disabled时判断失效, 会隐藏掉使用了data-favisible的组件
本次修改在调用序列化之前, 先临时移除disabled属性, 取出完整的序列化参数后, 再将其恢复禁用, 从而使附加了disabled的组件也能使data-favisible组件正确获取到其当前值
使用情景: 添加表单时某个选项需要管理员手动选择, 在添加完成后, 编辑不能再次修改该选项, 但其下根据该元素需要显隐的组件应当正常展示

Signed-off-by: AriFe.Liu <88468560@qq.com>

AriFe.Liu 9 months ago
parent
commit
7c7780bc56
1 changed files with 2 additions and 0 deletions
  1. 2 0
      public/assets/js/require-form.js

+ 2 - 0
public/assets/js/require-form.js

@@ -559,7 +559,9 @@ define(['jquery', 'bootstrap', 'upload', 'validator', 'validator-lang'], functio
                         }
                     };
                     // @formatter:on
+                    var $disabledElements = form.find(':disabled').removeAttr('disabled');
                     var dataArr = form.serializeArray(), dataObj = {}, fieldName, fieldValue;
+                    $disabledElements.attr('disabled', 'disabled');
                     $(dataArr).each(function (i, field) {
                         fieldName = field.name;
                         fieldValue = field.value;