Заполните поле даты формы Acrobat сегодняшней датой, только если поле пусто

Цель состоит в том, чтобы форма Acrobat заполнила поле даты ("MeetingDate") сегодняшней датой, когда пользователь открывает ее. Если пользователь сохраняет форму как есть и открывает ее через несколько дней, старая дата все еще должна быть там, а не заменена текущей датой. Если пользователь изменяет дату в поле, эта дата должна быть сохранена и не должна заменяться при последующем открытии формы.

У меня есть собственный сценарий расчета для поля даты ("MeetingDate"), который делает все это, но с одной проблемой:

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

Это работает хорошо, за исключением того, что после ввода сценария текущая дата заполняет поле MeetingDate, и значение сохраняется. Это имеет смысл, но я хочу, чтобы поле автоматически заполнялось сегодняшней датой, когда пользователь открывает форму. Вместо этого, если пользователь откроет форму завтра (16.07.2010), в поле будет указано 15.07.2010, потому что это дата, когда я сохранил форму.

Я думаю, что ответ может состоять в том, чтобы ввести сценарий как документ JavaScript (Дополнительно | Процесс документа | Документ JavaScript), поскольку сценарии документа выполняются при открытии формы, но все мои попытки приводят к тому, что дата, введенная пользователем, перезаписывается, когда Форма открывается через несколько дней. Спасибо за помощь!


person Wells Anderson    schedule 16.07.2010    source источник
comment
О вашем скрипте: event.value относится к значению события (не имеет ничего общего со значением вашего поля). Он всегда будет срабатывать, и ваше предложение всегда будет истинным. Вот почему поле всегда сбрасывается. Смотрите мой ответ ниже.   -  person o-o    schedule 16.07.2010


Ответы (4)


Удалите свой скрипт и замените его следующим javascript-документом:

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

Сохраните форму и откройте ее, и дата должна появиться прямо там.

При создании javascript документа не забывайте не помещать его внутрь функции. Один из способов сделать это заключается в следующем. В меню Акробат:

  1. Дополнительно->Обработка документов->Javascripts документов...
  2. В появившемся диалоговом окне введите имя сценария (например, «populate_date») и нажмите «Добавить...».
  3. В появившемся диалоговом окне сценария: УДАЛИТЕ все ("function populate_date(){}") и вставьте в приведенный выше сценарий.
  4. Нажмите «ОК», затем «Закрыть».
  5. Сохраните форму, закройте ее и снова откройте.
  6. Нет шага 6! :>
person o-o    schedule 16.07.2010
comment
Пак, это работает отлично! Большое спасибо. Когда форма открыта, Javascript документа теперь вставляет сегодняшнюю дату, если поле пустое, но не перезаписывает поле, если в нем уже есть дата. Я продублировал код для других полей даты: var g = ...; вар ч = ...; Спасибо! (Когда я наберу достаточно баллов, я проголосую за этот ответ, если смогу.) - person Wells Anderson; 16.07.2010
comment
Рад помочь! (Я думаю, все, что вам нужно сделать, это щелкнуть стрелку вверх и поставить галочку в появившемся окне: Принять это как ответ... :›) - person o-o; 16.07.2010

Надеюсь, вы не возражаете, если я добавлю это редактирование вашего кода для британских пользователей (и таких новичков, как я).

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

Этот код заполняет поле даты следующим образом...

03/Jan/2013
person Puzznic    schedule 03.01.2013

@wells-андерсон

Вам просто нужно удалить оператор if:

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

К сожалению, когда я добавляю var f = this.getField("DatepPrinted"); if (!f.value) f.value = util.printd("dd/mmmm/yyyy", new Date()); к моему пользовательскому нажатию клавиши в форме он возвращает мне «0» вместо 02 апреля 2015 года .. кто-нибудь знает, почему?

person Gandoe Dyck    schedule 02.04.2015
comment
Это похоже на другой вопрос, опубликованный как ответ. Пожалуйста, опубликуйте это как новый вопрос, если это так. - person rfornal; 02.04.2015