lightswitch html客户端输入验证未更新

时间:2015-06-17 12:12:45

标签: javascript validation visual-studio-lightswitch

我有一个输入来输入一些数据并希望使用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;

    }
};

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

谢谢!

1 个答案:

答案 0 :(得分:2)

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

我们通常采用的方法是将dataBind更改处理程序添加到contentItem,以便在用户“标签”时重置validationResults。进入。当用户保存并执行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."
                )
            ];
        }
    });
};

这将执行验证,因为用户标签'关闭条目而不是延迟支票直到用户保存。