Seite 1 von 1

Datumsvalidierung Formate Moment.js

Verfasst: 23.10.2014, 12:36
von Niocron
Hallo liebe Community,
seit geraumer Zeit nutzen wir in der Uniklinik Heidelberg dynamische PDFs innerhalb unseres SAP-Systems. Seit ein paar Tagen wurde ich damit beauftragt mich darum zu kümmern, ein Objekt oder ein Fragment zu bauen, dass dem Datums und Uhrzeitfeld (folgend DUZ) entspricht, jedoch auch mit Eingaben wie "9.8.14" oder "9. Sept. 2014" klarkommt und egal welches Format verwendet wurde das ganze dann immer im gleichen Format im rawValue abspeichert ('YYYYMMDD').

Seit längerem nutzen wir die Moment.js Library. Meine Ansatz war jetzt einfach im exit-event des DUZ mit diesem code das Datum einzufangen: (ZIMLib is ne Skriptobjekt-variable)

Code: Alles auswählen

try{
    var date = util.scand("yyyy-mm-dd",this.rawValue);
    app.alert("util.scand: "+ date.toString());
}
catch(e){
   var formats = ['D.M.YY','D.M.YYYY','D. MMM. YY','D. MMM. YYYY','D.MMM YY','D.MMM     YYYY'];
   var momentDate = ZIMLib.moment(this.rawValue,formats)
}
So das Problem besteht jetzt darin, dass zwar jedes Format erkannt wird, aber falsche Eingaben leider auch teilweise angenommen werden und zu falschen Ergebnissen führen wie z.B. die Eingabe '11.111.14' wird angenommen und als '11.11.0014' abgespeichert oder bei '28.12.22222' schneidet er die letzte Ziffer ab und macht 28.12.2222 daraus.

Als folge dessen wollte ich zuerst einmal die neueste Version der Moment Lib einbinden (hatten noch v1.7.2) -> Kein Erfolg...bei Aufruf kommt "moment() ist keine Methode"

So erste Frage: weiß jmd. wie ich dieses Abschneiden verhindern kann?
2. wie ich die Falschen Formate umgehen kann
3. wie ich die aktuelle Moment.js einbinde
4. weis jemand ob es möglich ist bei dem DUZ nur per Kalenderwahl freizugeben und und die normale Eingabe per Tastatur zu sperren?
5. andere Lösungsvorschläge?

anbei das Testdokument
-Skriptobjekt ZIMLib enthält alte Version
-Skriptobjekt NeuMin enthält neue Version minimalisiert (von http://momentjs.com/)
-Skriptobjekt NeuMin enthält neue Version im langen Format (von http://momentjs.com/)

leider is nur die alte Version Aufrufbar

Vielen Dank im Vorraus und sorry für den langen Text.
LG

Datumsvalidierung Formate Moment.js

Verfasst: 24.10.2014, 10:15
von thomasmi
Hallo,

Anscheinend ist in deiner Datei ein Virus.

Virus Name: McAfeeGW: Heuristic.BehavesLike.PDF.Exploit-CRT.O


Thomas

Datumsvalidierung Formate Moment.js

Verfasst: 24.10.2014, 10:25
von Niocron
Das ist absolut unmöglich. Das File besteht aus nem neu erstellten DPDF mit ner legal gekauften Livecycle Designer Version und der Moment.js Library von der original Homepage.

Interessanterweise haben wir hier im Klinikum auch McAfee...

Danke für den Hinweis vllt. ein Fehler beim hochladen...ansonsten muss der Fehler bei dir liegen.
hier nochmal das File.



Datumsvalidierung Formate Moment.js

Verfasst: 24.10.2014, 10:27
von thomasmi
Habe versucht das File herunter zu laden,

und unser Virenscanner meldet das Virus:
Virus Name: McAfeeGW: Heuristic.BehavesLike.PDF.Exploit-CRT.O


Oder ist das kein Virus, sondern eine nur eventuell ungewöhnliche Script Programmierung?

 

Thomas

 

Datumsvalidierung Formate Moment.js

Verfasst: 24.10.2014, 10:45
von Niocron
mhm also hab mit unserem McAfee scannen lassen, kam keine Meldung

da is nahezu kein Code drin. Besteht nur aus einer DatumUndUhrzeitfeld. Und im Exit Event dieses Objekts steht:

Code: Alles auswählen

var invalidDateErrorText = "Ungültiges Datum!";
var invalidDateFormatErrorText    = "Ungültiges Format!";
var formats = ['D.M.YY','D.M.YYYY','D. MMM. YY','D. MMM. YYYY','D.MMM YY','D.MMM YYYY'];
//var dataFormat = 'YYYYMMDD';
var formats = ['DD.MM.YYYY'];
//this.editValue
//this.formattedValue
try
{
    //Datum im Defaultmuster(DD.MM.YY) DUZ-Objektes eingegeben 
    var date = util.scand("yyyy-mm-dd",this.rawValue);
    app.alert("util.scand: "+ date.toString());
}
catch(e)
{
    try
    {
        var momentDate = ZIMLib.moment(this.rawValue,formats);
        if(momentDate .isValid())
        {
            app.alert('true: '+ momentDate.format('DD.MM.YYYY'));
            var formattedValueTest = this.rawValue;
            //this.rawValue = momentDate.format(dataFormat);
            //this.formattedValue = formattedValueTest;                    
        }
        else
            {app.alert('invalid');this.rawValue = '';this.formattedValue='';}
    }
    catch(e)
    {app.alert(e);}
}
und dann sind da noch die 3 Skriptobjekte die einmal die alte, einmal die neue minimalisierte und einmal die lange Fassung der Original Moment.js Librabry enthalten und jeweils die instanz des Objekts dazu