Firefox скрывает скрытые входы

У меня есть скрытое поле ввода в моей форме. Я заметил, что если это значение поля изменяется javascript, а затем пользователь обновляет страницу, это же значение будет установлено при перезагрузке страницы. Из того, что я видел, это происходит только в Firefox.

Я решил это нежелательное поведение, добавив autocomplete="off" к этому скрытому вводу, но W3C не нравится это решение, и если я проверяю страницу, я получаю ошибку:

Attribute autocomplete not allowed on element input at this point.

По-видимому, атрибут autocomplete работает только на определенных входах - здесь.

Итак, есть ли какое-либо решение, которое удовлетворит как W3C, так и Firefox?

Ответы

Ответ 1

Чтобы проверить (к чему я бы не приложил столько усилий, как вы), я думаю, вы могли бы использовать autocomplete="off" для всей формы, а затем поочередно включать ее, например:

<!DOCTYPE html>
<html>
<head>
    <title>TEST</title>
</head>
<body>
    <form autocomplete="off">
        <input type="hidden" name="test">
        <input type="text" name="otherfield" autocomplete="on">
    </form>
</body>
</html>

Я изначально думал, что это ошибка Firefox, но после обсуждения с robertc в комментариях, я думаю, что ожидаемое поведение зависит от конкретных случаев использования. Спецификация не позволяет автозаполнения на скрытых полях, поэтому моя первая реакция по-прежнему кажется правильной, но реализация Firefox может иметь некоторые хорошие аргументы для ее поддержки. Прокомментируйте.

Ответ 2

В качестве альтернативы вы можете использовать <input type="text" style="display: none;" autocomplete="off" />. Это немного взломать, но это должно сработать!

Кэширование в Firefox на самом деле довольно хорошая функция во много раз, но это вызывает некоторые проблемы при создании более динамических форм.