【问题标题】:Validate Form on Change ONLY仅验证变更表格
【发布时间】:2016-04-12 19:05:24
【问题描述】:

由于我们导入的大部分数据在技术上存在验证错误,因此用户无法在不首先更正之前输入的错误数据的情况下更新字段。这不会是一个问题,除非这个用户很多时候没有在该字段中输入正确值所需的信息,但我们仍然需要保存他们的更新。

是否可以禁用 DynamicForm 的提交验证?

【问题讨论】:

    标签: smartclient


    【解决方案1】:

    是否可以禁用 DynamicForm 的提交验证?

    有一个 disableValidation 属性,它禁用客户端验证器。

    【讨论】:

    • 感谢您的快速响应,虽然这确实阻止了我正在寻找的提交验证,但它也破坏了我想保留的更改验证......有什么想法吗?跨度>
    【解决方案2】:

    迄今为止我能找到的最佳解决方案。

    我正在禁用验证并覆盖getValues,它被称为saveData 的一部分,因此我手动解析所有字段并查找错误。如果我发现错误,我将其从返回值中删除并将其存储在valuesManager.invalidatedFields 下。

    如果一个字段有错误,它不会被包含在保存中,但是因为服务器将返回原始值,所以我也必须覆盖 setValues 以防止你的(错误的)更改被覆盖。

    此外,因为getValues 在初始加载时被调用,它也会在加载时进行验证。

    isc.ValuesManager.create({
        disableValidation: true,
        invalidatedFields: {},
        setValues: function(values){
            console.log("setting values..", this.invalidatedFields);
            for (var key in this.invalidatedFields) {
                if (this.invalidatedFields.hasOwnProperty(key)) {
                    values[key] = this.invalidatedFields[key];
                }
            }
            this.Super("setValues", arguments);
        },
        getValues: function () {
            this.invalidatedFields = [];
            var data = this.Super("getValues");
            for (var key in data) {
                if (data.hasOwnProperty(key)) {
                    var form = this.getMemberForField(key);
                    if (form && !form.getField(key).validate()) {
                        console.log(key + " failed validation", data[key]);
                        this.invalidatedFields[key] = data[key];
                        delete data[key];
                    }
                }
            }
            return data;
        }
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-22
      • 1970-01-01
      • 1970-01-01
      • 2013-03-15
      • 1970-01-01
      • 2013-02-27
      相关资源
      最近更新 更多