Форма, сохраняющая значения после обновления - PullRequest
1 голос
/ 18 июня 2009

Итак, я унаследовал эту унаследованную кодовую базу рельсов, и мне нужно исправить ошибку, когда данная форма сохраняет значения (которые еще не были сохранены в БД) даже после обновления страницы.

Вариант использования: Пользователь заполняет данные в форме, но не нажимает кнопку Отправить. Пользователь нажимает кнопку обновления в браузере. Значения в форме сохраняются вместо обновления всей страницы.

Есть идеи, где я могу начать искать? В моем кратком, ограниченном опыте работы с Rails, это не та вещь, которая происходит по умолчанию, поэтому она должна быть где-то закодирована?

Ответы [ 3 ]

3 голосов
/ 18 июня 2009

Иногда браузеры делают это. (Я не говорю о выпадающих списках автозаполнения, которые также делают браузеры ... просто говорю о формах, которые частично заполнены, никогда не отправляются, а затем обновляются).

Убедитесь, что значения в полях фактически получены из вашего приложения Rails, проверив окно исходного кода HTML.

Значения, предоставленные браузером из-за предыдущей записи, не будут присутствовать в атрибуте VALUE, но предоставленные сервером будут.

Некоторые варианты для избежания этого могут быть:

  • Отправьте пользователя в форму, используя POST. Таким образом, любое обновление приводит к «хотите ли вы повторно отправить» и т. Д. Я не думаю , что браузер предварительно заполнит все поля в этой ситуации (так же, как когда пользователь публикует, а затем нажимает кнопку «Назад» кнопка).
  • Используйте событие onload (), чтобы стереть значения поля формы.

Возможно, есть более простое решение ... Иногда Ctrl-F5 помогает, но я думаю, что я видел даже то, что раньше не работало.

1 голос
/ 09 ноября 2010

Я тоже столкнулся с этой проблемой, и даже <body onload="myform.reset()"> не сработал. Это было особенно проблематично, потому что, к лучшему или к худшему, я использую скрытые входные данные в качестве счетчиков (например, для отслеживания динамического количества полей загрузки файла). Это, очевидно, необходимо сбросить при перезагрузке, чтобы предотвратить появление неприменимых предупреждающих сообщений. Я «исправил» это для своих внутренних целей, отказавшись от кнопки сброса в пользу ссылки. Вместо <input type="reset"/> я использую <a href=".">Reset</a> (имя файла index.php). Далеко не элегантно, но работает для моих целей.

0 голосов
/ 18 июня 2009

Скажите пользователю нажать CTRL + F5

- редактировать если вы не можете сказать пользователю , нажмите CTRL + F5 (что, по моему опыту, всегда работает, если браузер не глючит или если что-то else идет не так), просто отключите form.reset () в событии onload . Это очистит поля формы от значений по умолчанию. Если у вас есть значения по умолчанию в полях (например, ), то при отключении .reset () он сбрасывается до значения по умолчанию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...