Флажок по-прежнему отмечен нажатием кнопки «Назад», но он не имеет «флажка» атрибут

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

Я заметил, что эта «проблема» возникает на:

  • Сафари
  • Хром

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

Установка всех моих флажков по умолчанию не имеет смысла.

Отключение кэша Chrome не имеет никакого эффекта.


Я не знаю, будут ли полезны примеры моего кода

РЕДАКТИРОВАТЬ: это мой самый первый пост, поэтому не забудьте сказать мне, почему мой вопрос кажется неясным

1

Решение

Используйте Javascript для очистки формы, возможно, быстрее, используя фреймворк, такой как jQuery.
Тогда как то так …

$( document ).ready(function() {
$(':input').val(''); //This would clear all inputs.
});

Поэтому, когда документ завершит загрузку, он очистит все входные данные.

0

Другие решения

Используйте следующую функцию при загрузке тела.

<body onLoad="uncheck()">

<script>
function uncheck() {
$(':checkbox:checked').prop('checked',false);
//or you can also use removeAttr
//$(':checkbox:checked').removeAttr('checked');
}
</script>

Проверьте подпирать а также removeAttr Больше подробностей

Или вы также можете использовать следующий код

<script>
$( document ).ready(function() {
$(':checkbox:checked').prop('checked',false);
//$(':checkbox:checked').removeAttr('checked');
});
</script>

Проверьте .готовы Больше подробностей.

ИЛИ ЖЕ

Если вы хотите очистить все поля ввода, вот ответ для этого с подробным объяснением: Сброс многоступенчатой ​​формы с помощью jQuery

0

Я знаю, что это старый вопрос, но кто-то может «гуглить» тот же вопрос и приземлиться здесь, как я. В 2019 году Chrome 71 все еще имеет такое поведение, так что в ближайшее время это не исчезнет. В то же время здесь есть скрипт для простой настройки проверенного состояния на проверенный атрибут.

<script>
/* This script is to FIX some strange browser (Chrome included) behaviour.
History back returns false checks on checkboxes.
The checked HTML attribute is only a "DEFAULT VALUE" unfortunately */
var filter_form = document.getElementById("filter_form");
var inputs = filter_form.getElementsByTagName("input");
for(var i = 0; i < inputs.length; i++) {
if(inputs[i].type == "checkbox") {
/* If default is checked, but state is not checked, check it*/
if (inputs[i].defaultChecked == true) {
if (inputs[i].checked != true) {
inputs[i].checked = true;
}
/* If defeault not checked, but state is checked, uncheck it */
} else {
if (inputs[i].checked == true) {
inputs[i].checked = false;
}
}
}
}
</script>
0