1.4 Eigene Validierungshandler

1.4 Eigene Validierungshandler

enaio® webclient validiert Masken nach bestimmten Kriterien. Zum Beispiel ob ein Pflichtfeld ausgefüllt ist oder ob der Wert eines Textfeldes dem in der Objektdefinition hinterlegten regulären Ausdruck entspricht. Reicht die normale Validierung nicht aus, so können via Skript eigene Validierungsroutinen erstellt werden und an gewünschte Maskenelemente angeheftet werden. Diese eigenen Validierungsroutinen werden von enaio® webclient aufgerufen, wenn dieser über die normale Validierung keine Fehler gefunden hat. Sie übersteuern somit nicht die normale Validierung. Sie erweitern diese. Innerhalb der eigenen Validierungsroutinen kann der Skripter dann entscheiden, ob der Wert gültig oder ungültig ist. Nachfolgend werden Beispiele für eigene Validierungsroutinen gegeben.

Validierung von Maskenelementen

Das nachfolgende Beispiel kann bei einem Workflow im BeforeOpen-Skript und bei einer DMS-Maske im OnShow-Skript erfolgen. Eigene Validierungsroutinen können jedoch auch zu einem beliebigen Zeitpunkt an Maskenelemente angeheftet werden.

var entries = []; for (var i = 0; i < 10000; i++) { entries.push({ value: "Wert " + i }); } var myCustomValidator = function(field, formHelper) { var fieldValue = field.api.getValue(); for (var i = 0; i < entries.length; i++) { if (entries[i].value == fieldValue) { return true; // Der Wert ist in der Auswahlliste vorhanden. Er ist somit gültig. } } return false; // Der Wert wurde nicht in der Auswahlliste gefunden. Er wurde ggf. frei // eingegeben. Dies ist ungültig. }; var list = formHelper.getFieldByName("Text0"); list.api.setCustomListEntries(entries); list.api.addCustomValidation(myCustomValidator, "Fehler", "Dieser Wert befindet sich nicht in der Auswahl", false);

Validierung von Tabellenzellen

Die eigene Validierung von Tabellenzellen ist ein zweigeteilter Prozess. Der nachfolgende Code erstellt einen Pseudokatalog für eine Tabellenspalte.

globals.entries = []; for (var i = 0; i < 10000; i++) { globals.entries.push({ value: "Wert " + i }); } var table7 = formHelper.getFieldByName("Table7"); table7.api.createPseudoCatalog(0, configList, function(cell, row, returnFunction) { returnFunction(globals.entries); });

Die eigentliche Validierung muss dann im CellValueChanged-Event erfolgen.

if (cell.colIndex == 0) { for (var i = 0; i < globals.entries.length; i++) { if (globals.entries[i].value == cell.value) { field.api.setCellValid(cell.rowIndex, cell.colIndex, true); return; } } field.api.setCellInvalid(cell.rowIndex, cell.colIndex, "Fehler", "Dieser Wert befindet sich nicht in der Auswahl", true); }