仅在变更时验证表格

时间:2016-04-12 19:05:25

标签: smartclient

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

是否可以针对DynamicForm停用提交验证?

2 个答案:

答案 0 :(得分:1)

  

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

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

答案 1 :(得分:0)

到目前为止我能找到的最佳解决方案。

我禁用验证并覆盖getValuessaveData被调用,因此我手动解析任何字段并查找错误。如果我发现错误,我会将其从返回值中删除并将其存储在valuesManager.invalidatedFields下。

如果字段有错误,它将不会包含在保存中,但由于服务器将返回原始值,我必须覆盖setValues以防止您的(错误)更改被覆盖。< / p>

另外,因为在初始加载时调用了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;
    }
});