Обнаружение измененных значений формы - Firefox заменяет введенные пользователем значения, нарушая обнаружение загрязнения - PullRequest
1 голос
/ 22 февраля 2010

Я внедряю функцию обнаружения грязи для веб-приложения. «Грязность», которая меня интересует, - это ценность сервера по сравнению с тем, что отображается в форме. Сервер работает под управлением Django, большинство наших скриптов написано на jQuery.

Мы обслуживаем поля формы с правильными значениями по умолчанию, соответствующими значению на сервере, например

<input name="foo" type="text" value="this is the saved value" id="id_foo" />

Стандартный ответ - перебирать входные данные формы и сохранять их начальные значения для последующего сравнения во время загрузки.

Это работает в большинстве случаев, но Firefox ломает это, иногда игнорируя предоставленное значение и заменяя его последним вводом пользователя. Так, например: мы обслуживаем форму, пользователь изменяет ее («теперь она грязная»), затем обновляет; Firefox заменяет значение последним вводом пользователя.

Это нарушает сценарий обнаружения грязи, потому что его начальное значение не , которое предоставил сервер, а то, которое пользователь ввел до обновления. В этом сценарии нет способа получить доступ к исходному значению.

Как другие разработчики справляются с этим? Сейчас я поставляю скрытый диапазон с исходным значением real , но он невероятно хакерский:

<input name="foo" type="text" value="this is the saved value" id="id_foo" />
<span class="original-value" id="id_foo_orig">this is the saved value</span>

Есть ли способ отключить это поведение для входов в Firefox? (IE и Chrome по крайней мере не делают этого) Я что-то упустил здесь?

Спасибо
Роберт

1 Ответ

3 голосов
/ 22 февраля 2010

Добавьте атрибут autocomplete="off" в форму, чтобы отключить автозаполнение полей, если это нормально. Вот документация - https://developer.mozilla.org/en/How_to_Turn_Off_Form_Autocompletion

...