仅当字段为空时,使用今天的日期填写Acrobat表单日期字段

时间:2010-07-16 03:22:54

标签: javascript forms acrobat

目标是使用Acrobat表单填写日期字段(“MeetingDate”),并在用户打开日期时填写今天的日期。如果用户按原样保存表单并在几天后打开它,则旧日期应该仍然存在,而不是由当前日期替换。如果用户在字段中更改日期,则应保存该日期,并且在以后打开表单时不应替换该日期。

我有一个日期字段(“MeetingDate”)的自定义计算脚本,可以完成所有这些,但有一个问题:

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

除了输入脚本后,今天的日期填写MeetingDate字段并保存值,这样做效果很好。这是有道理的,但我希望当用户打开表单时,字段会自动填充今天的日期。相反,如果用户明天(2010年7月16日)打开表单,则该字段将在7/15/2010中显示,因为这是我保存表单的日期。

我认为答案可能是将脚本作为文档JavaScript(高级|文档处理|文档JavaScripts)输入,因为文档脚本在打开表单时执行,但我的所有尝试都会导致用户输入的日期为表单在几天后打开时被覆盖。 谢谢寻求帮助!

4 个答案:

答案 0 :(得分:10)

删除您的脚本并将其替换为以下文档javascript:

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

保存表单并将其打开,日期应该在那里弹出。

在制作文档javascript时,请记住不要将其放在函数中。这样做的一种方法如下。在Acrobat菜单中:

  1. 高级 - >文档处理 - >文档Javascripts ...
  2. 在弹出的对话框中,输入脚本名称(例如“populate_date”),然后点击添加...
  3. 在弹出的脚本对话框中:删除所有内容(“function populate_date(){}”)并粘贴上面的脚本。
  4. 单击“确定”,然后单击“关闭”。
  5. 保存表单,关闭它并重新打开。
  6. 没有第6步!产品:>

答案 1 :(得分:1)

希望你不介意我为英国用户(以及像我这样的新手)添加你的代码编辑

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

此代码填写日期字段,如下所示......

03/Jan/2013

答案 2 :(得分:1)

@井-安德森

您只需要删除if语句:

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

答案 3 :(得分:0)

不幸的是,当我添加 var f = this.getField(" DatepPrinted"); if(!f.value)f.value = util.printd(" dd / mmmm / yyyy",new Date()); 我在表格上的自定义按键让我回来了#34; 0"而不是02年4月 - 2015年......任何人都知道为什么?