Datumsvalidierung Formate Moment.js

Fragen und Antworten rund um das Thema JavaScript im LiveCycleDesigner
Antworten
Niocron
Beiträge: 7
Registriert: 12.09.2014, 12:41

Datumsvalidierung Formate Moment.js

Beitrag von Niocron » 23.10.2014, 12:36

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
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

Benutzeravatar
thomasmi
Beiträge: 102
Registriert: 11.05.2010, 09:11

Datumsvalidierung Formate Moment.js

Beitrag von thomasmi » 24.10.2014, 10:15

Hallo,

Anscheinend ist in deiner Datei ein Virus.

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


Thomas

Niocron
Beiträge: 7
Registriert: 12.09.2014, 12:41

Datumsvalidierung Formate Moment.js

Beitrag von Niocron » 24.10.2014, 10:25

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.


Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

Benutzeravatar
thomasmi
Beiträge: 102
Registriert: 11.05.2010, 09:11

Datumsvalidierung Formate Moment.js

Beitrag von thomasmi » 24.10.2014, 10:27

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

 

Niocron
Beiträge: 7
Registriert: 12.09.2014, 12:41

Datumsvalidierung Formate Moment.js

Beitrag von Niocron » 24.10.2014, 10:45

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

Antworten