2010-07-16 6 views
5

Das Ziel ist für ein Acrobat-Formular, um ein Datumsfeld ("MeetingDate") mit dem heutigen Datum zu füllen, wenn der Benutzer es öffnet. Wenn der Benutzer das Formular unverändert speichert und einige Tage später öffnet, sollte das alte Datum noch vorhanden sein und nicht durch das aktuelle Datum ersetzt werden. Wenn der Benutzer das Datum in dem Feld ändert, sollte dieses Datum gespeichert werden und sollte nicht ersetzt werden, wenn das Formular später geöffnet wird.Füllen Sie Acrobat Formular Datumsfeld mit dem heutigen Datum nur, wenn das Feld leer ist

Ich habe ein benutzerdefiniertes Berechnungsskript für ein Datumsfeld („MeetingDate“), die all dies tut, aber mit einem Problem:

if (event.value != "") 
then 
event.value = util.printd ("m/d/yyyy", new Date()) 
endif 

Das funktioniert gut, außer dass, nachdem das Skript, die heutigen Datum füllt Eingabe im Feld MeetingDate und der Wert wird gespeichert. Das ist sinnvoll, aber ich möchte, dass das Feld automatisch mit dem heutigen Datum ausgefüllt wird, wenn der Benutzer das Formular öffnet. Wenn der Benutzer das Formular morgen (16.07.2010) öffnet, hat es stattdessen den 15.07.2010 im Feld, da dies das Datum ist, an dem ich das Formular gespeichert habe.

Ich denke, die Antwort kann ein Skript als Dokument JavaScript (Advanced | Document Process | Dokument JavaScripts) eingeben, da Document Skripts ausgeführt werden, wenn das Formular geöffnet ist, aber alle meine Versuche verursachen ein Datum vom Benutzer eingegeben überschrieben werden, wenn das Formular Tage später geöffnet wird. Danke für die Hilfe!

+0

über das Skript: event.value bezieht sich auf den Wert eines Ereignisses (hat nichts mit dem Wert zu tun, von dein Feld). Es wird immer feuern, und deine Klausel wird immer wahr sein. Deshalb wird das Feld immer zurückgesetzt. Siehe meine Antwort unten. –

Antwort

10

Ihr Skript entfernen und ersetzen Sie es mit dem folgenden Dokument javascript:

var f = this.getField("wells_datefield"); 
if (!f.value) f.value = util.printd ("m/d/yyyy", new Date()); 

Formular speichern und ihn öffnen, und das Datum sollte direkt dort Pop.

Bei der Erstellung des Dokuments Javascript, denken Sie daran, nicht in eine Funktion. Ein Weg, dies zu tun, ist das Folgende. Im Acrobat-Menü:

  1. Advanced-> Dokument Verarbeitungs-> Dokument Javascripts ...
  2. im angezeigten Dialogfenster erscheint, geben Sie einen Skriptnamen (zB „populate_date“) und klicken Sie auf Hinzufügen ...
  3. In dem Skript-Dialog, der erscheint: REMOVE alles ("function populate_date() {}") und fügen Sie das Skript oben ein.
  4. Klicken Sie auf OK und dann auf Schließen.
  5. Speichern Sie das Formular, schließen Sie es und öffnen Sie es erneut.
  6. Es gibt keinen Schritt 6! :>
+0

Paque, das funktioniert perfekt! Ich danke dir sehr. Wenn das Formular geöffnet wird, fügt das Document Javascript jetzt das heutige Datum ein, wenn das Feld leer ist, überschreibt das Feld jedoch nicht, wenn es bereits ein Datum hat. Ich habe den Code für andere Datumsfelder dupliziert: var g = ...; var h = ...; Vielen Dank! (Wenn ich genug Punkte bekomme, werde ich diese Antwort wählen, wenn ich kann.) –

+0

Glücklich zu helfen! (Ich denke, du musst nur auf den Pfeil nach oben klicken und das Kästchen anklicken, das erscheint: Akzeptiere dies als Antwort "...:>) –

1

Hoffe, Sie haben nichts dagegen, wenn ich diese bearbeiten Ihres Codes für britische Benutzer (und Newbies wie mich) hinzufügen

var f = this.getField("date"); 
if (!f.value) f.value = util.printd ("dd/mmm/yyyy", new Date()); 

Dieser Code das Datumsfeld füllt sich wie folgt ...

03/Jan/2013 
0

Leider, wenn ich hinzufügen var f = this.getField ("DatepPrinted"); if (! F.value) f.value = util.printd ("TT/MMmm/JJJJ", neues Datum()); zu meinem benutzerdefinierten Tastenanschlag auf einem Formular gibt es mir zurück "0" anstelle von 02. April 2015 .. jemand weiß warum?

+0

Das sieht wie eine andere Frage aus, die als Antwort gepostet wird. Bitte poste dies als neues Frage, wenn es ist. – rfornal

1

@ Brunnen-anderson

Sie müssen nur die if-Anweisung entfernen:

event.target.value = util.printd("m/d/yyyy", new Date());