[gelöst]getEventArgs undefiniert oder null?
Verfasst: 11. Juli 2016 10:16
Ich sehe den Wald vor lauter Bäumen nicht mehr. Es gibt eine neue kleine Anforderung, dass das Speichern bitte unterbunden werden soll, wenn in bestimmten Feldern mehr als zwei Ziffern vorkommen (damit dort nicht u.a. Telefonnummern oder Adressen geschrieben werden).
Da ich noch ein Skript zur Formüberprüfung der Telefonnummern meines Vorgängers liegen habe, sollten die Anpassungen ja nur halb so wild sein. Habe ich gedacht. Zum Vergleich: Als erstes der Code zum Telefonnummernformat (das funktioniert), danach mein angepasster Code (wirft den Fehler "Die Eigenschaft getEventArgs eines undefinierten oder Nullverweises kann nicht abgerufen werden").
Geladen werden jeweils die FormatCheck-Funktionen beim OnSave-Event des Forms.
Wo übersehe ich etwas? Das Vorgehen ist doch identisch, nur dass ich andere Felder zum Vergleich mit der RegEx verwende, oder nicht?
Da ich noch ein Skript zur Formüberprüfung der Telefonnummern meines Vorgängers liegen habe, sollten die Anpassungen ja nur halb so wild sein. Habe ich gedacht. Zum Vergleich: Als erstes der Code zum Telefonnummernformat (das funktioniert), danach mein angepasster Code (wirft den Fehler "Die Eigenschaft getEventArgs eines undefinierten oder Nullverweises kann nicht abgerufen werden").
- Code:
function TelFormatCheck(executionObj) {
/*===========================THEMA: TELEFONNUMMERN-Format-Check==========================*/
TelefonnummerCheck("telephone1",executionObj);
TelefonnummerCheck("telephone2",executionObj);
TelefonnummerCheck("telephone3",executionObj);
TelefonnummerCheck("fax",executionObj);
}
/*------------------------------------------------------------------------------------------------------------*/
function TelefonnummerCheck(Feld,executionObj)
{
var tel = Xrm.Page.data.entity.attributes.get(Feld);
switch (Feld) {
case "telephone1": var AnzText="Telefon 1";
break;
case "telephone2": var AnzText="Telefon 2";
break;
//case "telephone3": var AnzText="Telefon 3";
//break;
case "fax": var AnzText="Fax";
break;
}
/* Regular expression*/
var regEx=/^\+[0-9]{1,4} \([0-9]{1,9}\) [0-9]{1,9}\-?[0-9]{1,9}$/;
var tel_inhalt = tel.getValue();
if (tel_inhalt != null)
{
if (tel_inhalt.search(regEx) == -1)
{
alert(AnzText+":ungültiges Format\n------------------------------\ngültige Formate:\n+49 (385) 123456789 oder\n+49 (385) 123456789-123456789\n-------------------------\nSpeichern nicht möglich!");
/*executionObj ist nur ungleich null, wenn onsave ausgeführt wurde.
wenn onchange ausgeführt wird, darf exec.. nicht ausgeführt werden. */
if (executionObj.getEventArgs() != null)
{
// Datensatz wird nicht gespeichert; onsave wird abgebrochen
executionObj.getEventArgs().preventDefault();
//event.returnValue=false;
//return false;
//Xrm.Page.getControl(Feld).setFocus();
}
}
else {
//alert(Feld+":OK");
}
}
}
- Code:
function NamenFormatCheck(executionObj) {
NamenCheck("rz_bezeichnung",executionObj);
NamenCheck("name",executionObj);
NamenCheck("rz_name2",executionObj);
NamenCheck("rz_name3",executionObj);
NamenCheck("rz_name4",executionObj);
}
/*------------------------------------------------------------------------------------------------------------*/
function NamenCheck(Feld,executionObj)
{
var namen = Xrm.Page.data.entity.attributes.get(Feld);
switch (Feld) {
case "rz_bezeichnung": var AnzText="Bezeichnung";
break;
case "name": var AnzText="Firmenname";
break;
case "rz_name2": var AnzText="Name2";
break;
case "rz_name3": var AnzText="name3";
break;
case "rz_name4": var AnzText="name4";
break;
}
/* Regular expression*/
var regEx=/^[0-9]{3,}$/;
var namen_text = namen.getValue();
if (namen_text != null)
{
if (namen_text.search(regEx) == -1)
{
alert(AnzText+":ungültiges Format\n------------------------------\nMehr als zwei Ziffern sind hier nicht erlaubt\n-------------------------\nSpeichern nicht möglich!");
if (executionObj.getEventArgs() != null)
{
// Datensatz wird nicht gespeichert; onsave wird abgebrochen
executionObj.getEventArgs().preventDefault();
//event.returnValue=false;
//return false;
//Xrm.Page.getControl(Feld).setFocus();
}
}
else{
//Irgendwas zum Abfange
}
}
}
Geladen werden jeweils die FormatCheck-Funktionen beim OnSave-Event des Forms.
Wo übersehe ich etwas? Das Vorgehen ist doch identisch, nur dass ich andere Felder zum Vergleich mit der RegEx verwende, oder nicht?