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: Alles auswählen
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: Alles auswählen
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?