我正在为电子商务开发基于复选框的过滤器。一切正常,但当我尝试通过后退按钮返回时,复选框仍然检查没有任何选中的属性。
我注意到这个“问题”发生在:
我找到的唯一方法就是重新加载页面。但“用户返回”事件似乎不可捕获,我不想刷新每一页。
将我的所有复选框设置为默认值毫无意义。
停用Chrome缓存无效。
我不知道我的代码样本是否有用
编辑:这是我的第一篇文章,所以一定要告诉我为什么我的问题似乎不清楚
我知道这是一个古老的问题,但有人可能会“谷歌”同样的问题并落在这里,就像我做的那样。在2019年,Chrome 71仍然具有这种行为,因此它不会很快消失。与此同时,这里有一个脚本可以轻松地将checked状态调整为checked属性。
<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>
使用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>
查看prop和removeAttr了解更多详情
或者您也可以使用以下代码
<script>
$( document ).ready(function() {
$(':checkbox:checked').prop('checked',false);
//$(':checkbox:checked').removeAttr('checked');
});
</script>
查看.ready了解更多详情。
要么
如果你想清除所有输入字段,这里有详细解释的答案:Resetting a multi-stage form with jQuery
有一个疯狂的技巧来解决这个问题。将autocomplete='off'
添加到您的复选框。听起来很疯狂,但它确实有效!