Ошибка с Firefox-отключенный атрибут ввода не сбрасывается при обновлении
Я нашел то, что я считаю ошибкой с Firefox, и мне интересно, действительно ли это ошибка, а также любые обходные пути для этого.
если вы создаете обычную веб-страницу со следующим кодом:
<html>
<head>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.0/jquery.min.js"></script>
</head>
<body>
<div>
<input id="txtTest" type="text" />
<input type="button" onclick="$('#txtTest').attr('disabled','disabled');" value="Set Disabled (jQuery)" />
<input type="button" onclick="document.getElementById('txtTest').disabled = true;" value="Set Disabled (js)" />
<input type="button" onclick="$('#txtTest').removeAttr('disabled');" value="Remove Disabled" />
</div>
</body>
</html>
если вы disable
the textbox
динамически, а затем обновить страницу,textbox
останется отключенным вместо сброса обратно в исходное состояние не отключено. Я пробовал это в IE8 и Chrome, и они ведут себя так, как я ожидал, сбрасывая textbox
вернуться к не отключен при обновлении.
еще один интересный бит информации заключается в том, что он по-прежнему делает то же самое, если вход checkbox
вместо textbox
.
3 ответа:
Это "функции" Firefox, который запоминает входные значения формы через страницу обновляется. Чтобы исправить это поведение, вы просто установите
autocomplete="off"
на форме, содержащей входы, или просто непосредственно на вход.это останавливает автозаполнение от работы и предотвращает браузер от запоминания состояния полей ввода.
кроме того, вы можете просто "жестко обновить", нажав CTRL+F5. Это позволит полностью сбросить текущую страницу.
чтобы справиться с кнопкой назад, сделайте это (от здесь)
window.addEventListener('pageshow', PageShowHandler, false); window.addEventListener('unload', UnloadHandler, false); function PageShowHandler() { window.addEventListener('unload', UnloadHandler, false); } function UnloadHandler() { //enable button here window.removeEventListener('unload', UnloadHandler, false); }
Как упоминалось ранее, вам нужно добавить
autocomplete="off"
для кнопок.здесь
sh
+perl
сниппет для автоматизации этого в случае<button>
в HTML-файлы/шаблоны (по некоторым предположениям):find /path/to/html/templates -type f -name '*.html' -exec perl -pi -e \ 's/(?<=<button )(.*?)(?=>)/@{[(index(,"autocomplete=")!=-1?"":" autocomplete=\"off\"")]}/g' \ {} +
предположения:
Открытие
<button>
теги начинаются и заканчиваются на одной линии. Если это не так (т. е. они могут быть разделены на несколько строк), а затем заменить/g
С/gs
должен помочь (thes
модификатор причины.
чтобы соответствовать новым строкам, а также)допустимый HTML (например, между
<
и>
) и не более чем (>
) внутри открывающего тега.