2010-08-07 3 views
5

У меня есть форма, где все должно быть отключено при загрузке, кроме первого поля.
Первое поле - вход автозаполнения. Когда они выберут что-то из него, он отключается, а затем устанавливает второе поле для включения. Второе поле - выпадающее меню.Как предотвратить сброс HTML-формы

Проблема заключается в том, что после того, как пользователь использует форму и нажимает кнопку «Назад», она переходит в состояние, аналогичное состоянию, в котором оно находилось, прежде чем нажать кнопку «Отправить». 1- автозаполнение отключено (но не имеет значения для по какой-то причине) 2- dropdown разрешен и установлен на значение, которое они отправили с

Я попытался принудительно восстановить форму с помощью javascript (используя jQuery .ready()), но .ready() не запускается после того, как они возвращаются с помощью кнопки «Назад».

Обновление страницы после возврата восстанавливает ее. Любые идеи, как я могу это исправить?

+1

Я сам столкнулся с этой проблемой, и в любом случае всегда нашел лучший дизайн. Рассматривали ли вы редизайн? – strager

ответ

1

Проблема в том, что браузеры несовместимы в том, как они обрабатывают кнопку «Назад». Например, Firefox кэширует состояние HTML (после обработки Javascript) и возвращается в это состояние после нажатия кнопки «Назад», но некоторые другие этого не делают.

Лучшее, что вам нужно сделать после отправки, следует перенаправить на URL-адрес, содержащий HTML, представляющий представленные данные, с возможностью редактирования этих представленных деталей. Это даст вашим пользователям меньше желания хотеть нажать кнопку «Назад».

Edit:

Вы также должны добавить к вашей странице:

<meta http-equiv="cache-control" content="no-cache, no-store, must-revalidate"> 

Это, как предполагается, чтобы браузеры кэшировать изменения состояния страницы. Я предполагаю, что вы предпочтете его, чтобы, когда пользователь нажимает кнопку «Назад», они начинаются с начального состояния страницы.

+0

это хорошая идея. Я собираюсь принять это как ответ, но из любопытства, есть ли решение этой проблемы? im думая, что это возможно с некоторыми трюками на стороне сервера (например, обновлением страницы с php, когда они вернутся) – babonk

+0

«но другие нет». - Я предлагаю вам изменить это на «но некоторые другие нет». Opera делает что-то похожее на то, что делает Firefox (хотя мне нравится, как Opera делает это лучше), и могут быть и другие браузеры, которые тоже сохраняют состояние (elinks приходит на ум). – strager

+0

Хорошее разъяснение, strager. – Jacob