Lightswitch HTML 客户端输入验证未更新

lightswitch html client input validation not updated

本文关键字:更新 验证 输入 HTML 客户端 Lightswitch      更新时间:2023-09-26

我有一个输入来输入一些数据,并希望使用javascript对其进行验证。我使用以下代码:

myapp.AddEditHaendlerItem.beforeApplyChanges = function (screen) {

    // check PLZ
    if (screen.HaendlerItem.PLZ != "12345") {
        screen.findContentItem("PLZ").validationResults = [
            new msls.ValidationResult(
                screen.HaendlerItem.details.properties.PLZ,
                "PLZ muss eine Zahl und 5 Zeichen lang sein.")
        ];
        return false;
    }
};

但我不知道,如何删除验证结果。例如,如果用户更正了输入,则仍然会显示验证错误。如何删除它?

谢谢!

由于错误不会自动从内容项的 validationResults 数组中删除,因此需要手动将其删除。

我们通常采用的方法是将 dataBind 更改处理程序添加到 contentItem 中,以便在用户"按 Tab 键"关闭条目时重置验证结果。 然后,当用户保存并执行 beforeApplyChanges 函数时,将重新应用任何剩余的错误。

以下代码片段突出显示了这种方法:-

myapp.AddEditHaendlerItem.PLZ_postRender = function (element, contentItem) {
    contentItem.dataBind("value", function (value) {
        contentItem.validationResults = [];
    });
};
myapp.AddEditHaendlerItem.beforeApplyChanges = function (screen) {
    // check PLZ
    if (screen.HaendlerItem.PLZ != "12345") {
        screen.findContentItem("PLZ").validationResults = [
            new msls.ValidationResult(
                screen.HaendlerItem.details.properties.PLZ,
                "PLZ muss eine Zahl und 5 Zeichen lang sein."
            )
        ];
        return false;
    }
};

此外,如果您想为用户提供更即时的反馈,您可以将验证测试移动到更改处理程序中,如下所示:-

myapp.AddEditHaendlerItem.PLZ_postRender = function (element, contentItem) {
    contentItem.dataBind("value", function (value) {
        contentItem.validationResults = [];
        // check PLZ
        if (value != "12345") {
            contentItem.validationResults = [
                new msls.ValidationResult(
                    contentItem.details,
                    "PLZ muss eine Zahl und 5 Zeichen lang sein."
                )
            ];
        }
    });
};

这将在用户"按 Tab 键"关闭条目时执行验证,而不是延迟检查,直到用户保存。