Я работаю над фильтром на основе флажков для электронной коммерции.
Все работает нормально, но когда я пытаюсь вернуться через кнопку назад, флажки по-прежнему проверено без каких-либо проверенных атрибутов.
Я заметил, что эта «проблема» возникает на:
Единственный способ, который я нашел, это просто перезагрузить страницу. Но событие «пользователь вернулся», кажется, не поддается отслеживанию, и я не хочу обновлять каждую страницу.
Установка всех моих флажков по умолчанию не имеет смысла.
Отключение кэша Chrome не имеет никакого эффекта.
Я не знаю, будут ли полезны примеры моего кода
РЕДАКТИРОВАТЬ: это мой самый первый пост, поэтому не забудьте сказать мне, почему мой вопрос кажется неясным
Используйте Javascript для очистки формы, возможно, быстрее, используя фреймворк, такой как jQuery.
Тогда как то так …
$( document ).ready(function() {
$(':input').val(''); //This would clear all inputs.
});
Поэтому, когда документ завершит загрузку, он очистит все входные данные.
Используйте следующую функцию при загрузке тела.
<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
Я знаю, что это старый вопрос, но кто-то может «гуглить» тот же вопрос и приземлиться здесь, как я. В 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>