2012-03-20 2 views
14

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

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

Attribute autocomplete not allowed on element input at this point. 

По-видимому, атрибут autocomplete работает только на конкретные материалы - see here.

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

+0

Тег 'autocomplete' действителен только в html5, поэтому я добавляю тэг html5 к вопросу. – jmlnik

+0

см. Также http://stackoverflow.com/questions/2486474/preventing-firefox-from-remebering-the-input-value-on-refresh-with-meta-tag – user123444555621

+0

@ Pumbaa80, tamir уже пробовал использовать 'autocomplete =" off ", но это не проверяет на' 'в соответствии со спецификацией. Вы предлагаете, чтобы кешированные теги/заголовки не позволяли Firefox автоматически заполнять форму? – jmlnik

ответ

11

Для проверки (которые я бы не ставил так много усилий, как вы) Я думаю, вы могли бы использовать 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> 

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

+0

Firefox кэширует состояние всех полей формы при перезагрузке (и вперед и назад), это неплохо, это особенность. – robertc

+0

работает :) спасибо. – tamir

+1

@robertc, поля кеширования, которые могут быть отредактированы пользователем, хороши, да, но кеширование скрытых полей?!?! Как это полезно или особенность? Я считаю, что команда FF просто не подумала об этом случае использования и не реализовала спецификацию правильно. – jmlnik

3

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

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