Javascript Datum in ein Feld schreiben

  • Hallo..


    ich hab ein kleines Problem
    in einer Maske soll beim drücken eines Knopfes das Feld "Date4" mit dem aktuellen Datum/Uhrzeit gefüllt werden..


    Wenn möglich soll es ein gemeinsames JavaScript sein damit es auch im Notes Client funktioniert..


    Hab hier leider keine Beispiele zu dem Thema gefunden auf die schnelle.


    Kann mir jemand helfen ?


    Merci

  • Danke...


    Ich hab es mir angeschaut...aber ich hab kein passendes Beispiel gefunden was es mir verdeutlich hat wie es gehen soll...geschweige denn die Befehle..


    Wie man Formulareingaben überprüft ok das weiss ich mit JavaScript..aber das ist auch schon alles :-\


    Hm...glaub ich muss mir echt mal so ein RedBook holen...aber leider fehlt die Zeit grad...


    Trotzdem danke..

  • Dieses hat den nachteil das es sich um den Englischen format Output: 23/05/1999 00:00:00


    Sinnvoller wäre diese selber zusammen stellen zu können.


    Also:


    function nowStr() {
    var now=new Date()
    var hours=now.getHours()
    var minutes=now.getMinutes()
    timeStr=""+((hours < 10) ? "0" : "") + hours
    timeStr+=((minutes < 10) ? ":0" : ":") + minutes
    return timeStr
    }

  • Also...Merci erstmals Ihr zwei.. :)


    wenn ich das richtig verstanden habe..
    function nowStr() {
    var now=new Date()
    var hours=now.getHours()
    var minutes=now.getMinutes()
    timeStr=""+((hours < 10) ? "0" : "") + hours
    timeStr+=((minutes < 10) ? ":0" : ":") + minutes
    return timeStr
    }
    var fields = document.forms[0];
    fields.Date4.value=nowStr.toLocaleString();


    Aber ich ich bekomme den Laufzeitfehle:
    Date4 ist Null oder kein Objekt


    ??


    Gibt es eigentlich Problem wenn ich den Button in einer Hide-When Zeile habe?


    Cheers..

  • Hm...


    ich hab jetzt den aktuellen Vorschlag mal probiert..
    Wie soll ich das Feld dann am besten Sichtbar machen, wenn es eigentlich versteckt sein sollte?


    Und sorry wenn ich jetzt nochmal frage, aber wie kann ich ein entsprechendes Feld generieren?


    Fragen über Fragen, ich weiss..


    Sorry :-\

  • Du hast mindestens 2 Möglichkeiten:
    1. Notesmässig:
    Hide When Formel und dann in den Maskeneigenschaften "generate HTML for all Fields" irgendwo im Tab mit dem Propeller. Dann generiert Notes für alle versteckten Felder den HTML Code: haufenweise "input type=...." am Ende des HTML Files
    oder
    2. Du versteckst das Feld nur vor dem Webbrowser mittels Stylesheets (z.B. im HTML Tab des Feldes unter Styles="display:none" oder so)

  • Hi Umeli


    danke für den Tip mit den Maskenvorgaben..


    Ich hab das zuerst mit Formel probiert, aber irgendwie geht das nur in Kombination mit Javascript jetzt.
    Ich hab mit zwei Knöpfen getestet..
    Formel:
    @Command([RefreshWindow]);
    @Command([EditDocument]);
    @SetField(Date4;@Now);
    @Command([FileSave]);
    @Command([RefreshWindow])


    und einer mit JS:
    var datum = new Date();
    var fields = document.forms[0];
    fields.Date4.value=datum.toLocaleString();


    Wenn ich den Formel-Button drücke, bleibt das Dokument im Edit mode stehe (bei nochmaligen drücken passiert nichts)... wenn ich dann den JS-Button drücke, dann füllt er mir das Feld wie es aussieht, aber ich muss dann wieder den Formel-Button benutzen
    dass er einen FileSave macht.


    Ist da irgendwo ein denkfehler in der Formel das er das Feld nicht füllt @Setfield müsste gehen (ist R6.5.1 Server)..

  • Ähem der Refresh des Dokuments machst Du über @command([ViewRefreshFields]), dann sollte es gehen....


    oder du gibst deinem Formel button eine ID und drückst ihn dann via JAvascript aus deinem Script Button :)

  • Hmm..dann kommt aber:
    HTTP Web Server: Lotus Notes Exception - @Function is not valid in this context


    Formel Button ID geben ok, aber wie "drücke ich ihn via JS"


    Sorry..bin eben kein Developer, sondern nur Admin
    (aber soll keine Ausrede sein :)


    Wie kann ich das am besten in JS schreiben oder in Formel (ich schreibe einfach am besten meinen Gedankengang):
    @Command([RefreshWindow]);
    @Command([EditDocument]);
    var datum = new Date();
    var fields = document.forms[0];
    fields.Date4.value=datum.toLocaleString();
    @Command([FileSave]);
    @Command([RefreshWindow])


    Ich probiers jetzt noch mit einem Agenten nebenher...
    Ich glaub ich muss heute abend mal :pint:

  • Sag mal was möchtest du erreichen ?
    1) Das dieses datumsfeld ausgefüllt wird, und das dokument gespeichert, aber das es stehen bleibt für weitere verarbeitung ???
    2) Das dieses datumsfeld gefüllt wird, der user aber selber weiter arbeiten kann ?


    und sollte das beide im Notes dokument UND in web genau gleich gehen ?


    document.submit würde das dokument im WEB speichern, aber dann auch den web vorgang beenden.

  • Ronka:


    Das Feld Date4 soll mit dem aktuellen Datum gefüttert werden. Das Dokument soll dann gespeichert werden und dann ein "refresh" des Dokuments damit der Button verschwindet (da der Hide-When sich auch auf den Inhalt des Date4 bezieht).


    Es soll nur übers Web gemacht werden.

  • Dann mußtest du den generierte URL der das dokument darstellt mittels $$Return feld in NOTES vorbelegen, und ein document.submit ausführen, der würde das dokument speichern, und danach das gleiche dokument erneut darstellen.
    In Notes Solltest du den @command([editdocument];"1") das dokument in bearbeitung nehmen, und nach ein FileSave das document mit "0" wieder in lese modus versetzen. das vorteil dieser vorgang ist das es dabei das dokument nicht neu laden muß, und falls es bereits in Edit modus wäre, dieses keine negative folgen haben würde, und danach das dokument auf jedenfall in lese modus versetzt wird.

  • Also nach einen kurze schlagabtausch in ICQ hier nochmal für alle deutlichkeit.
    Gewünscht wird einen JS funktion der der Anwender der ein Dokument zum LESEN angezeigt bekommt einmalig klicken kann, wonach ein (versteckten) feld mit der aktuelle datum und zeit gefüllt werden sollte, das dokument gespeichert, und erneut dargestellt. Wobei der aktion/knopf dann nicht mehr dargestellt werden sollte (hidewhen funktioniert im web nicht dynamisch also muß der maske neu dargestellt werden.


    Function nowStr()
    {
    var now=new Date()
    var hours=now.getHours()
    var minutes=now.getMinutes()
    timeStr=now.getDays() + ":" + now.getMonths() + ":" + now.getYears() + " " + ((hours < 10) ? "0" : "") + hours + ((minutes < 10) ? ":0" : ":") + minutes
    return timeStr
    }


    var fields = document.forms[0];
    fields.Date4.text=nowStr()


    Damit sollte es klappen, aber ja, vielleicht auch erst morgen wenn du dieses hier liest, oder dein ICQ anmachst.


    Und das problem lag daran das date4 != Date4 ist..für Javascript auf jedenfall.. :)