我有一个输入来输入一些数据并希望使用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;
}
};
但我不知道,如何删除验证结果。例如,如果用户更正了输入,则验证错误仍然显示。我该如何删除它?
谢谢!
答案 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."
)
];
}
});
};
这将执行验证,因为用户标签'关闭条目而不是延迟支票直到用户保存。